Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengisih tatasusunan berdasarkan dua medan dalam php
Dalam PHP, apabila kita perlu mengisih tatasusunan, kita boleh menggunakan fungsi terbina dalam seperti sort() dan rsort() untuk mengisih elemen dalam tatasusunan. Walau bagaimanapun, kadangkala kita perlu mengisih berdasarkan dua medan dalam tatasusunan, kemudian kita perlu menggunakan fungsi usort().
usort — Isih nilai dalam tatasusunan menggunakan fungsi perbandingan yang ditentukan pengguna
Sintaks: bool usort (array &$array, boleh dipanggil $value_compare_func)
Fungsi ini Isih nilai dalam tatasusunan menggunakan fungsi perbandingan yang ditentukan. Perlu diingatkan bahawa fungsi ini secara langsung mempengaruhi tatasusunan asal dan tidak mengembalikan tatasusunan yang diisih.
Senario Penggunaan
Apabila berurusan dengan beberapa aplikasi yang kompleks, kadangkala perlu mengisih mengikut berbilang medan, seperti mengisih mengikut harga dahulu, dan kemudian mengisih mengikut volum jualan apabila harga adalah sama , maka kita perlu Gunakan fungsi usort() untuk mencapai ini.
Kod Contoh
Berikut ialah contoh sebenar menggunakan fungsi usort() untuk mengisih tatasusunan. Katakan kita mempunyai susunan produk yang mengandungi nama produk, harga, jumlah jualan dan maklumat lain Sekarang kita perlu mengisih produk berdasarkan harga dan jumlah jualan.
$products = [ [ "name" => "商品A", "price" => 100, "sales" => 200 ], [ "name" => "商品B", "price" => 120, "sales" => 150 ], [ "name" => "商品C", "price" => 80, "sales" => 300 ], ]; function cmp($a, $b) { if ($a['price'] == $b['price']) { return $a['sales'] < $b['sales'] ? 1 : -1; } return $a['price'] > $b['price'] ? 1 : -1; } usort($products, "cmp"); print_r($products);
Hasil berjalan:
Array ( [0] => Array ( [name] => 商品C [price] => 80 [sales] => 300 ) [1] => Array ( [name] => 商品A [price] => 100 [sales] => 200 ) [2] => Array ( [name] => 商品B [price] => 120 [sales] => 150 ) )
Di sini kami mentakrifkan fungsi cmp(), yang digunakan untuk membandingkan harga dan volum jualan dua produk, dan menyusunnya dalam tertib menaik daripada harga , Isih mengikut volum jualan daripada besar kepada kecil. Kemudian gunakan fungsi usort() untuk mengisih tatasusunan produk dan mencetak hasil yang diisih.
Ringkasan
Menggunakan fungsi usort() boleh mengisih tatasusunan dan mengisih berdasarkan berbilang medan untuk mencapai keperluan aplikasi yang lebih kompleks. Perlu diingatkan di sini bahawa fungsi pengisihan membandingkan dua elemen tatasusunan, jadi $a dan $b masing-masing mewakili dua elemen dalam tatasusunan Fungsi perlu mengembalikan satu daripada tiga nilai nombor positif, nombor negatif dan 0 , menunjukkan bahawa nisbah $a $b adalah lebih besar, lebih kecil atau sama.
Atas ialah kandungan terperinci Bagaimana untuk mengisih tatasusunan berdasarkan dua medan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!