Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Mengisih Tatasusunan Berbilang Dimensi dalam PHP Menggunakan Fungsi Fleksibel dan Boleh Digunakan Semula?

Bagaimana Mengisih Tatasusunan Berbilang Dimensi dalam PHP Menggunakan Fungsi Fleksibel dan Boleh Digunakan Semula?

Patricia Arquette
Lepaskan: 2025-01-01 07:29:09
asal
481 orang telah melayarinya

How to Sort Multidimensional Arrays in PHP Using a Flexible and Reusable Function?

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
    };
}
Salin selepas log masuk

Ciri Terperinci:

(1) Lajur Isih Berbilang :

usort($data, make_comparer('number', 'name'));
Salin selepas log masuk

(2) Isih Songsang:

usort($data, make_comparer(['name', SORT_DESC]));
Salin selepas log masuk

(3) Unjuran Tersuai:

usort($data, make_comparer(['birthday', SORT_ASC, 'date_create']));
Salin selepas log masuk

(4) Menggabungkan Ciri-ciri:

usort($data, make_comparer(
    ['number', SORT_DESC],
    ['birthday', SORT_ASC, 'date_create']
));
Salin selepas log masuk

Faedah:

  • Boleh Digunakan Semula
  • Fl exible
  • Boleh Balik
  • Boleh Diperluas
  • Asosiatif

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan