如何从多维数组中获取另一个键的相应键?

时间:2013-03-27 21:51:17

标签: php arrays multidimensional-array foreach

我有一个多维数组,格式如下:

$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循环中为每个'name'键获取相应的'time'键。

3 个答案:

答案 0 :(得分:2)

为什么您不想为每个name密钥存储timedate

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

您可以使用以下代码获取姓名和时间:

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

答案 1 :(得分: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

答案 2 :(得分: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";
}