Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana Mengisih Tatasusunan Berbilang Dimensi dalam PHP Menggunakan Fungsi Fleksibel dan Boleh Digunakan Semula?
Cara Isih Tatasusunan Berbilang Dimensi dalam PHP
Memperkenalkan Penyelesaian Umum untuk PHP 5.3
Pelaksanaan:
function make_comparer() { // Normalize criteria up front $criteria = func_get_args(); foreach ($criteria as $index => $criterion) { $criteria[$index] = is_array($criterion) ? array_pad($criterion, 3, null) : array($criterion, SORT_ASC, null); } return function($first, $second) use (&$criteria) { foreach ($criteria as $criterion) { list($column, $sortOrder, $projection) = $criterion; $sortOrder = $sortOrder === SORT_DESC ? -1 : 1; if ($projection) { $lhs = call_user_func($projection, $first[$column]); $rhs = call_user_func($projection, $second[$column]); } else { $lhs = $first[$column]; $rhs = $second[$column]; } if ($lhs < $rhs) { return -1 * $sortOrder; } elseif ($lhs > $rhs) { return 1 * $sortOrder; } } return 0; // tiebreakers exhausted }; }
Ciri Terperinci:
(1) Lajur Isih Berbilang :
usort($data, make_comparer('number', 'name'));
(2) Isih Songsang:
usort($data, make_comparer(['name', SORT_DESC]));
(3) Unjuran Tersuai:
usort($data, make_comparer(['birthday', SORT_ASC, 'date_create']));
(4) Menggabungkan Ciri-ciri:
usort($data, make_comparer( ['number', SORT_DESC], ['birthday', SORT_ASC, 'date_create'] ));
Faedah:
Atas ialah kandungan terperinci Bagaimana Mengisih Tatasusunan Berbilang Dimensi dalam PHP Menggunakan Fungsi Fleksibel dan Boleh Digunakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!