前提・実現したいこと
連想配列で日付の新しい順にするためkrsortを使用しています。
キーを日付順にしているところを配列のキーを振り直したいです
発生している問題・エラーメッセージ
文字列に対してキーの振り直しができませんでした。 dateを新しい順にソートをかけた時にキーである 日時が 出ているため [0] (array) ( "id": 7868, "date": "2018-11-08", ), [1] (array) ( "id": 7820, "date": "2018-10-19", ), [2] (array) ( "id": 7722, "date": "2018-10-02", ) になるようにしたい
該当のソースコード
"items": [ { "data_id": 1, "data": { "2018-11-08": { "id": 7868, "date": "2018-11-08", }, "2018-10-19": { "id": 7820, "date": "2018-10-19", }, "2018-10-02": { "id": 7722, "date": "2018-10-02", } } } ] foreach ($i as $key => $data) { $d[$data->id]['id'] = $data->id; $d[$data->id]['data'][$data->date]['data_id'] = $data->data_id; $d[$data->id]['data'][$data->date]['date'] = $data->date; krsort($d[$data->id]['data']); }
###期待したい返却
"items": [ { "data_id": 1, "data": [ { "id": 7868, "date": "2018-11-08", }, { "id": 7820, "date": "2018-10-19", }, { "id": 7722, "date": "2018-10-02", } ] } ]
試したこと
$d[$data->id]['data'] = array_merge($d[$data->id]['data'] )
$d[$data->id]['data'] = array_values($d[$data->id]['data'] )
どちらも文字列に対してキーの振り直しができませんでした。
#ご教授ください。
#よろしくお願いします。
#追記
もしくは
##元データ
"items": [ { "data_id": 1, "data": [ { "id": 7820, "date": "2018-10-19", }, { "id": 7868, "date": "2018-11-08", }, { "id": 7722, "date": "2018-10-02", } ] } ]
##期待データ
"items": [ { "data_id": 1, "data": [ { "id": 7868, "date": "2018-11-08", }, { "id": 7820, "date": "2018-10-19", }, { "id": 7722, "date": "2018-10-02", } ] } ]
何を条件に、どういう結果を導き出したいのか、手編集したもので構わないので示してほしい。
情報を追記いたしました。
日付で比較して、降順に並べ直す、という意味でしょうか?
はいその通りです。