2011-06-03 91 views
2

我的調度系統的工作創建的時間塊,我要抓住我已經完成了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

等等...

任何幫助將不勝感激,因爲這已經讓我的大腦數小時。

在此先感謝您的幫助。

回答

0

試試這個:

$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 
+0

這些都是偉大的。非常感謝大家的幫助。 – Chris 2011-06-03 18:52:07

0

嗯,我看到它是要與子陣堆棧成一個大陣,然後分裂那些成的方式四個部分,你想從中選擇最小值和最大值顯示在你的網頁上?路上,我會做到這一點,如下所示:

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