1

この形式の配列を取得しました。

   Date            Employee               Notes
   2013-03-08        ABC                 Notes of ABC on 08-03-2013
   2013-03-08        PQR                 Notes of PQR on 08-03-2013
   2013-03-08        XYZ                 Notes of XYZ on 08-03-2013
   2013-03-09        ABC                 Notes of ABC on 09-03-2013
   2013-03-09        PQR                 Notes of PQR on 09-03-2013
   2013-03-09        XYZ                 Notes of XYZ on 09-03-2013

そして、私はこの形式の結果配列が欲しい

 Date            Employee               Notes
 2013-03-08        ABC                 Notes of ABC on 08-03-2013
                   PQR                 Notes of PQR on 08-03-2013
                   XYZ                 Notes of XYZ on 08-03-2013
 2013-03-09        ABC                 Notes of ABC on 09-03-2013
                   PQR                 Notes of PQR on 09-03-2013
                   XYZ                 Notes of XYZ on 09-03-2013

では、どうすればこのような結果を得るためにphpコードを書くことができますか?これは2次元配列であり、foreachループを使用してこのように表示しました。

誰か助けてくれませんか?

4

2 に答える 2

1

最初の配列を繰り返し処理し、現在の日付を変数に格納する必要があります。次の日付が変更されていない間は、同じサブエントリにサブデータを保存します。

あなたが持っていると仮定して

$initial = array(
    array('2013-03-08','ABC','Notes of ABC on 08-03-2013'),
    array('2013-03-08','PQR','Notes of PQR on 08-03-2013'),
    array('2013-03-08','XYZ','Notes of XYZ on 08-03-2013'),
    array('2013-03-09','ABC','Notes of ABC on 09-03-2013'),
    array('2013-03-09','PQR','Notes of PQR on 09-03-2013'),
    array('2013-03-09','XYZ','Notes of XYZ on 09-03-2013')
)

新しいアレイを次のように作成できます

$final = array();
$currentDate = false;
foreach($initial as $index => $subArray)
{
    if ($currentDate === false || $currentDate != $subArray[0])
    {
        $currentDate = $subArray[0];
        $final[$currentDate] = array();
    }

    $final[$currentDate][] = array($subArray[1], $subArray[2]);
}
于 2013-03-13T04:46:44.563 に答える
0

これは機能します:

$entries = array(
    array("Date" => "2013-03-08", "Employee" => "ABC", "Notes" => "Notes of ABC on 08-03-2013"),
    array("Date" => "2013-03-08", "Employee" => "PQR", "Notes" => "Notes of PQR on 08-03-2013"),
    array("Date" => "2013-03-08", "Employee" => "XYZ", "Notes" => "Notes of XYZ on 08-03-2013"),
    array("Date" => "2013-03-09", "Employee" => "ABC", "Notes" => "Notes of ABC on 09-03-2013"),
    array("Date" => "2013-03-09", "Employee" => "PQR", "Notes" => "Notes of PQR on 09-03-2013"),
    array("Date" => "2013-03-09", "Employee" => "XYZ", "Notes" => "Notes of XYZ on 09-03-2013")
);

$y = array();
foreach ($entries as $entry) {
    $date = $entry["Date"];
    if (!isset($y[$date])) $y[$date] = array();
    unset($entry["Date"]);
    $y[$date][] = $entry;
}

print_r($y);
于 2013-03-13T04:43:56.847 に答える