如何在php中检查数组中的相同值

如何在php中检查数组中的相同值,php,arrays,Php,Arrays,我有一个数组,其中天是键,时间是值: Array( [Mon] => 9:00-10:00,12:00-15:00,10:00-14:00 [Tue] => 9:00-10:00,12:00-15:00 [Wed] => 9:00-10:00,12:00-15:00 [Thu] => 9:00-10:00,12:00-15:00 [Fri] => 9:00-10:00,12:00-15:00 [Sat] =

我有一个数组,其中天是键,时间是值:

Array(

    [Mon] => 9:00-10:00,12:00-15:00,10:00-14:00

    [Tue] => 9:00-10:00,12:00-15:00

    [Wed] => 9:00-10:00,12:00-15:00

    [Thu] => 9:00-10:00,12:00-15:00

    [Fri] => 9:00-10:00,12:00-15:00

    [Sat] => 9:00-10:00,12:00-15:00

    [Sun] => 10:00-14:00

)
我希望以这种方式使用相同的数组:

 Array(

    [Mon] => 9:00-10:00,12:00-15:00,10:00-14:00

    [Tue/Wed/Thu/Fri/Sat] => 9:00-10:00,12:00-15:00

    [Sun] => 10:00-14:00

)

任何人都可以在这方面帮助我吗?

可能有更好的方法来实现这一点,但以下方法应该有效:-

$input = <YOUR ARRAY>
$output = array();

foreach ($input as $k => $v) {
  if (!isset($output[$v])) {
    $output[$v] = $k;
  } else {
    $output[$v] .= '/' . $k;
  }
}

print_r(array_flip($output));
$input=
$output=array();
foreach($k=>v的输入){
如果(!isset($output[$v])){
$output[$v]=$k;
}否则{
$output[$v]。='/'.$k;
}
}
打印(数组翻转($output));
请参阅。

$data=array(
“周一”=>“9:00-10:00,12:00-15:00,10:00-14:00”,
“星期二”=>“9:00-10:00,12:00-15:00”,
“Wed”=>“9:00-10:00,12:00-15:00”,
‘Thu’=>‘9:00-10:00,12:00-15:00’,
“Fri”=>“9:00-10:00,12:00-15:00”,
“星期六”=>“9:00-10:00,12:00-15:00”,
“太阳”=>“10:00-14:00”
);
$new_data=array();
foreach($key=>$value形式的数据){
$index=数组搜索($value,$new\u数据);
如果($索引){
$new_data[$index.'/'.$key]=$value;
未设置($new_data[$index]);
}否则{
$new_data[$key]=$value;
}
}
回声';
变量转储(新数据);
回声';

所以,我举了一个很长的例子

$output = array();

foreach ($input as $day => $time) $output[$time][] = $day;

foreach ($output as &$value) $value = implode('/', $value); 
unset ($value);

print_r(array_flip($output));

在重新查看您的问题后,我得出了以下解决方案,基本上使用
foreach
,并使用用于聚合天数的值作为收集天数的键(first foreach);然后将天数内插为单个字符串(第二个foreach),然后翻转数组:


/-请先看一下手册。另外,请让您自己熟悉本网站上的编辑工具。前面的空格是用来进行代码格式化的。不,你应该先自己动手编码。如果您的代码不起作用,我们将非常乐意帮助您。
Mon
中的
9:00-10:00,12:00-15:00,10:00-14:00
是什么?一根绳子?数组?@Pee-无法将相同的密钥保存在同一个密钥中value@ihsan-我已经试过了,没有得到结果,所以我在这里贴了亲爱的
$data = array(
    'Mon' => '9:00-10:00,12:00-15:00,10:00-14:00',
    'Tue' => '9:00-10:00,12:00-15:00',
    'Wed' => '9:00-10:00,12:00-15:00',
    'Thu' => '9:00-10:00,12:00-15:00',
    'Fri' => '9:00-10:00,12:00-15:00',
    'Sat' => '9:00-10:00,12:00-15:00',
    'Sun' => '10:00-14:00'
    );

$new_data = array();

foreach($data as $key => $value){
    $index = array_search($value, $new_data);
    if($index){
        $new_data[$index .'/' . $key] = $value;
        unset($new_data[$index]);
    }else{
        $new_data[$key] = $value;
    }
}

echo '<pre>';
var_dump($new_data);
echo '</pre>';
$date_array = Array(
    'Mon' => '9:00-10:00, 12:00-15:00, 10:00-14:00',
    'Tue' => '9:00-10:00, 12:00-15:00',
    'Wed' => '9:00-10:00, 12:00-15:00',
    'Thu' => '9:00-10:00, 12:00-15:00',
    'Fri' => '9:00-10:00, 12:00-15:00',
    'Sat' => '9:00-10:00, 12:00-15:00',
    'Sun' => '10:00-14:00',
);

$previous = null;
$new_days = array();
$new_times = array();
$i = 0;
foreach ($date_array as $day => $time) {
    if ($time === $previous) {
        $new_days[$i] .= '/' . $day;
        $new_times[$i] = $time;
    } else {
        $i++;
        $new_days[$i] = $day;
        $new_times[$i] = $time;
    }
    $previous = $time;
}

var_dump(array_combine($new_days, $new_times));
$output = array();

foreach ($input as $day => $time) $output[$time][] = $day;

foreach ($output as &$value) $value = implode('/', $value); 
unset ($value);

print_r(array_flip($output));