我正在一个调度系统上工作,我需要获取我已经完成的4次或4次以上的所有连续时间:
大堆([0]=>数组([0]=>18:00:00[1] =>19:00:00[2] =>20:00:00[3] =>21:00:00[4] =>22:00:00)[1] =>阵列([0]=>09:00:00[1] =>10:00:00[2] =>11:00:00[3] =>12:00:00[4] =>13:00:00[5] =>14:00:00[6] =>15:00:00[7] =>16:00:00))
我如何将这个多维数组作为复选框,并将它们放入四个潜在的时间块中?
例如:
复选框1=18:00:00-21:00:00
复选框2=19:00:00-22:00:00
复选框3=09:00:00-12:00:00
复选框4=10:00:00-13:00:00
等等…
任何帮助都将不胜感激,因为这件事已经折磨了我好几个小时了。
提前感谢您的帮助。
试试这个:
$a = array(
array("18:00:00", "19:00:00", "20:00:00", "21:00:00", "22:00:00"),
array("09:00:00", "10:00:00", "11:00:00", "12:00:00", "13:00:00", "14:00:00", "15:00:00", "16:00:00")
);
foreach ($a as $group)
{
for ($i = 3; $i < count($group); ++$i)
{
print $group[$i-3] . " - " . $group[$i] . "<br />";
}
}
输出:
18:00:00 - 21:00:00
19:00:00 - 22:00:00
09:00:00 - 12:00:00
10:00:00 - 13:00:00
11:00:00 - 14:00:00
12:00:00 - 15:00:00
13:00:00 - 16:00:00
好吧,我认为你想把子数组堆叠成一个大数组,然后把它们分成四个部分,从中选择要在网页上显示的最小值和最大值?我这样做的方式如下:
- 获取所有子数组值,并将它们放在一个大数组中
- 对大数组进行排序
- 将大阵列拆分为四段
- 循环遍历拆分的数组并获取最小值和最大值
- 在您的页面上显示这些
这就是代码的样子:
// Setting: Amount of checkboxes
$div = 4;
$a = array(
array("18:00:00", "19:00:00", "20:00:00", "21:00:00", "22:00:00"),
array("09:00:00", "10:00:00", "11:00:00", "12:00:00", "13:00:00", "14:00:00", "15:00:00", "16:00:00")
);
$a_tot = array_unique(array_merge($a[0], $a[1]));
$count = count($a_tot);
$num_per = ceil($count / $div);
sort($a_tot);
$a_new = array();
$i = 0;
while (!empty($a_tot[$i])) {
$a_new[] = array_slice($a_tot, $i, $num_per);
$i += $num_per;
}
$chk_opt = array();
for ($i=0; $i<$div; $i++) {
$chk_opt[] = sprintf("%s - %s", min($a_new[$i]), max($a_new[$i]));
}
unset ($a_tot, $count, $num_per, $a_new);
输出:
array(4) {
[0]=> string(19) "09:00:00 - 12:00:00"
[1]=> string(19) "13:00:00 - 16:00:00"
[2]=> string(19) "18:00:00 - 21:00:00"
[3]=> string(19) "22:00:00 - 22:00:00"
}