的想法僅僅是組並翻轉它。在對所有的數據進行分組後,重新分配這些值(意味着所有時間),然後翻轉分組數組。
理念:
// group
$datetime = array();
foreach ($storeArray as $day => $time) {
$datetime[$time][] = $day;
}
// and
// implode flip
$datetime = array_flip(array_map(function($e){
return implode(' - ', $e);
}, $datetime));
而且應該產生這樣的:
Array
(
[Monday - Wednesday - Thursday] => 08:30 - 16:30
[Tuesday] => 08:30 - 15:30
[Friday - Saturday] => 14:30 - 13:30
[Sunday] => 10:00 - 15:30
)
現在,你可以做你的意願。
另一個版本,相同的結果:
// container, total count, counter
$datetime = array(); $len = count($storeArray); $i = 0;
foreach ($storeArray as $day => $time) {
if (!isset($datetime[$time])) {
$datetime[$time] = ''; // initialize
}
$datetime[$time] .= $day . ' - '; // concatenate dash
if ($i == ($len - 1)) { // at the end of the loop, make cosmetic changes, remove extra dash
// remove each extra dash, then flip
$datetime = array_flip(array_map(function($e){ return rtrim($e, ' - '); }, $datetime));
}
$i++; // counter
}
爲什麼不是週一合併週三週四和?你正在使用的代碼在哪裏? – Ghost
對不起更新的問題 –
非常相似:http://stackoverflow.com/q/31370181 – Rizier123