Bagaimanakah Saya Boleh Isih Tatasusunan PHP Berbilang Dimensi mengikut Pelbagai Medan?

DDD
Lepaskan: 2024-11-22 05:53:14
asal
904 orang telah melayarinya

How Can I Sort a Multidimensional PHP Array by Multiple Fields?

Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai Medan Berbilang

Dalam PHP, mengisih tatasusunan berbilang dimensi dengan berbilang nilai medan boleh dicapai menggunakan array_multisort().

Pertimbangkan perkara berikut tatasusunan:

$data = [
    [
        "destination" => "Sydney",
        "airlines" => "airline_1",
        "one_way_fare" => 100,
        "return_fare" => 300
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_2",
        "one_way_fare" => 150,
        "return_fare" => 350
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_3",
        "one_way_fare" => 180,
        "return_fare" => 380
    ]
];
Salin selepas log masuk

Untuk mengisih tatasusunan ini mengikut return_fare dalam tertib menaik dan one_way_fare dalam tertib menaik, gunakan array_multisort():

// Extract specific fields into individual arrays
$return_fare = array_column($data, 'return_fare');
$one_way_fare = array_column($data, 'one_way_fare');

// Sort arrays using multiple criteria
array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $data);

// Print sorted array
print_r($data);
Salin selepas log masuk

Kaedah Alternatif:

  • array_orderby() Fungsi: Untuk penyelesaian yang ringkas, pertimbangkan untuk menggunakan fungsi array_orderby() , yang menyediakan pembalut di sekeliling array_multisort().
  • **array_column() dengan array_multisort()**: Untuk mengelakkan lelaran pada tatasusunan, gunakan array_column()` untuk mengekstrak nilai medan tertentu sebelum mengisih.
array_multisort(array_column($data, 'return_fare'), SORT_ASC,
                array_column($data, 'one_way_fare'), SORT_ASC,
                $data);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Tatasusunan PHP Berbilang Dimensi mengikut Pelbagai Medan?. 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