从多维数组创建时间块



我正在一个调度系统上工作,我需要获取我已经完成的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

好吧,我认为你想把子数组堆叠成一个大数组,然后把它们分成四个部分,从中选择要在网页上显示的最小值和最大值?我这样做的方式如下:

  1. 获取所有子数组值,并将它们放在一个大数组中
  2. 对大数组进行排序
  3. 将大阵列拆分为四段
  4. 循环遍历拆分的数组并获取最小值和最大值
  5. 在您的页面上显示这些

这就是代码的样子:

// 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"
}

相关内容

  • 没有找到相关文章

最新更新