2013-03-27 156 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"; 
}