2013-03-27 95 views
1

我有以下格式的多維數組:我如何從多維數組中獲取其他密鑰的相應密鑰?

$array = array (
    0 => 
    array (
     'date' => '2013-03-25', 
     'name' => 'Bob', 
     'time' => '11' 
    ), 
    1 => 
    array (
     'date' => '2013-03-25', 
     'name' => 'Brian', 
     'time' => '13' 
    ), 
    2 => 
    array (
     'date' => '2013-03-26', 
     'name' => 'Jack', 
     'time' => '14' 
    ), 
    3 => 
    array (
     'date' => '2013-03-26', 
     'name' => 'Bob', 
     'time' => '14' 
    ) 
); 

我試圖讓每個日期的名稱和相應的時間。我曾嘗試使用下面的方法得到了名字:

$array2 = array(); 
    foreach($array as $item) { 
    $array2[$item['date']][] = $item['name']; 
    } 

,然後使用:

foreach($array2[$date] as $name) 

運行上的名字查詢返回。但我不確定如何在第二個foreach循環中爲每個「名稱」鍵獲取相應的「時間」鍵。

回答

2

爲什麼你不想同時存儲nametime每個date密鑰?

$array2 = array(); 
foreach ($array as $item) { 
    $array2[$item['date']] []= array($item['time'], $item['name']); 
} 

您可以使用此代碼到達名稱和時間:

foreach ($array2 as $row) { 
    $name = $row[0]; 
    $time = $row[1]; 
} 
+0

啊,是的,就是這樣做的。謝謝。 – Nick 2013-03-27 23:10:01

1

您可以嘗試

$list = array(); 
foreach ($array as $k => $item) { 
    $list[$item['date']][] = array(
      $item['name'], 
      $item['time'] 
    ); 
} 

foreach ($list as $date => $data) { 
    echo $date, PHP_EOL; 
    foreach ($data as $var) { 
     list($name, $time) = $var; 
     echo $name, " ", $time, PHP_EOL; 
    } 
    echo PHP_EOL; 
} 

輸出

2013-03-25 
Bob 11 
Brian 13 

2013-03-26 
Jack 14 
Bob 14 
0

嘗試以下方法:

foreach($array as $item) { 
    $array2[$item['date'][] = array('name' => $item['name'], 'time' => $item['time']); 
} 

foreach($array2[$date] as $name) { 
    echo $name['name'] . ' => ' . $name['time'] . "\n"; 
}