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)

返された名前に対してクエリを実行します。しかし、2 番目の foreach ループで各「name」キーに対応する「time」キーを取得する方法がわかりません。

4

3 に答える 3

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];
}
于 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 に答える