Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai
Dalam tatasusunan berbilang dimensi, anda mungkin menghadapi keperluan untuk mengisih elemennya berdasarkan nilai kunci tertentu. Sebagai contoh, pertimbangkan tatasusunan berikut:
Array ( [0] => Array ( [hashtag] => a7e87329b5eab8578f4f1098a152d6f4 [title] => Flower [order] => 3 ) [1] => Array ( [hashtag] => b24ce0cd392a5b0b8dedc66c25213594 [title] => Free [order] => 2 ) [2] => Array ( [hashtag] => e7d31fc0602fb2ede144d18cdffd816b [title] => Ready [order] => 1 ) )
Isih mengikut Kekunci "pesanan"
Untuk mengisih tatasusunan mengikut kekunci "pesanan", anda boleh menggunakan fungsi usort(). Berikut ialah pecahan menyeluruh penggunaannya:
PHP 5.2 atau Terdahulu:
Tentukan fungsi isihan dahulu:
function sortByOrder($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; }
PHP 5.3 dan Kemudian:
Gunakan tanpa nama fungsi:
usort($myArray, function($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; });
PHP 7:
Gunakan operator kapal angkasa:
usort($myArray, function($a, $b) { return $a['order'] <=> $b['order']; });
PHP 7.4:
Gunakan anak panah fungsi:
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
Isih Berbilang Dimensi:
Untuk isihan berbilang dimensi, ubah suai fungsi isihan untuk merujuk elemen isihan berikutnya jika elemen pertama adalah sifar. Contohnya:
usort($myArray, function($a, $b) { $retval = $a['order'] <=> $b['order']; if ($retval == 0) { $retval = $a['suborder'] <=> $b['suborder']; if ($retval == 0) { $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder']; } } return $retval; });
Persatuan Utama
Jika anda perlu mengekalkan persatuan utama, gunakan uasort() dan bukannya usort().
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!