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 循环中的每个“名称”键获取相应的“时间”键。

4

3 回答 3

2

为什么您不想同时存储name和存储time每个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];
}
于 2013-03-27T21:55:56.647 回答
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
于 2013-03-27T21:57:34.873 回答
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";
}
于 2013-03-27T21:57:43.013 回答