从多维数组
问题描述:
我的调度系统的工作创建的时间块,我要抓住我已经完成了4个或以上的连续时间:从多维数组
Array ( [0] => Array ( [0] => 18:00:00 [1] => 19:00:00 [2] => 20:00:00 [3] => 21:00:00 [4] => 22:00:00 ) [1] => Array ( [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秒
复选框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"
}
这些都是伟大的。非常感谢大家的帮助。 – Chris 2011-06-03 18:52:07