変数には配列が入っており、このうちの2カラム(例:id,start_date)を結合した値を基準に並び替えたい。
$data中身、例
array(3) { [0]=> array(3) { ["Fruit"]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(5) "名前です1" ["start_date"]=> string(10) "2021-01-01" ......... [1]=> array(3) { ["Fruit"]=> ["id"]=> string(1) "3" ["name"]=> string(5) "名前です3" ["start_date"]=> string(10) "2021-03-01" ......... [2]=> array(3) { ["Fruit"]=> ["id"]=> string(1) "2" ["name"]=> string(5) "名前です2" ["start_date"]=> string(10) "2021-02-01"
これを 12021-01-01,32021-03-01,22021-02-01とし、
12021-01-01,22021-02-01,32021-03-01と配列ごと並び替えたい。
配列のソートということでhashsortを使ってみましたが、これでは1カラムしか使えません。
$data = Hash::sort($data, '{n}.Fruit.id', 'asc');
これを idとstart_dateとすることはできませんか?
並び替えるのは大元の配列(Fruit)まとめてです。
また、他に何か関数が存在しますか?
cakephp2
-------------回答からの追記01
12021-01-01,32021-03-01,22021-02-01
を並び替えするとidの桁数が増えた時に求める結果が得られない可能性。
id + 日付ではなく、日付+id にすることで解決?
2021-01-01-1 のようにすると、完全一致の場合でも問題なさそう?
※完全一致の場合、例えば2021-01-01-1が二つある場合は、また別の処理を加えるものとするので一旦、先頭からの一致判定でいいです。