如何在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));