2017-08-01 6 views
0

I持って開始時刻と終了時刻のデータ型を持つイベントと私のmysqlデータベースの次の表:私は毎日が持っているところこれで多次元配列を作成したい行の値に基づいてインデックスを持つ多次元配列を作成

start_time end_time day 
08:00:00 16:00:00 1 
08:00:00 16:00:00 1 
08:00:00 16:00:00 4 
08:00:00 16:00:00 5 

このような配列のstart_timeとend_timeです。

array:3 [ 
    1 => array:2 [ 
     0 => array:2 [ 
      0 => "08:00" 
      1 => "16:00" 
     ] 
     1 => array:2 [ 
      0 => "08:00" 
      1 => "16:00" 
     ] 
    ] 
    4 => array:1 [ 
     0 => array:2 [ 
      0 => "08:00" 
      1 => "16:00" 
     ] 
    ] 
    5 => array:1 [ 
     0 => array:2 [ 
      0 => "08:00" 
      1 => "16:00" 
     ] 
    ] 
] 

私は、すべてのイベントに変数を設定しています。

これは実行可能ですか、またはピボットテーブルを使用してこれら2つの値を別々に保つ必要がありますか?

ありがとうございます!あなたのフェッチされた行による

答えて

1

ループとキーとしてdayを使用し、動的要素[]を追加し、配列として回を割り当てる:

foreach($rows as $row) { 
    $result[$row['day']][] = array($row['start_time'], 
            $row['end_time']); 
} 

またはDBから取得する際にそれを実行します。

while($row = /* fetch_function() */) { 
    $result[$row['day']][] = array($row['start_time'], 
            $row['end_time']); 
} 
1
<?php 
$records = array(
    array(
     'start_time' => '00:11:22', 
     'end_time' => '11:22:33', 
     'day' => 1 
    ), 
    array(
     'start_time' => '20:11:22', 
     'end_time' => '21:22:33', 
     'day' => 2 
    ), 
    array(
     'start_time' => '10:11:22', 
     'end_time' => '11:22:33', 
     'day' => 1 
    ) 

); // Your actual data would replace this of course 

$sorted = array(); 
foreach($records as $record){ 
    // Group by day 
    $sorted[$record['day']][] = $record; 
} 


// Group again 
$results = array(); 
foreach($sorted as $day => $records){ 
    foreach($records as $record){ 
     $results[$day][] = 
     array($record['start_time'],$record['end_time']); 
    } 

} 

var_dump($results); 
関連する問題