Bagaimana Mengisih Tatasusunan Berbilang Dimensi Berdasarkan Nilai Tatasusunan Dalaman dalam PHP?

Barbara Streisand
Lepaskan: 2024-11-03 21:30:29
asal
442 orang telah melayarinya

How to Sort Multi-Dimensional Arrays Based on Inner Array Value in PHP?

Isih Tatasusunan Berbilang Dimensi Berdasarkan Nilai Tatasusunan Dalaman dalam PHP

Tatasusunan dalam PHP menyediakan struktur data yang berkuasa untuk mengatur dan menyimpan data. Walau bagaimanapun, mengisih tatasusunan berbilang dimensi berdasarkan nilai tertentu dalam tatasusunan dalaman boleh menjadi tugas yang mencabar.

Penerangan Masalah

Pertimbangkan jadual cincang PHP dengan struktur data berikut:

[
    [
        "type" => "suite",
        "name" => "A-Name"
    ],
    [
        "type" => "suite",
        "name" => "C-Name"
    ],
    [
        "type" => "suite",
        "name" => "B-Name"
    ]
]
Salin selepas log masuk

Matlamatnya adalah untuk mengisih struktur data ini berdasarkan kekunci "nama" dalam tatasusunan dalam.

Kaedah Isih

Pelbagai fungsi PHP boleh digunakan untuk menyusun tatasusunan:

  • ksort: Isih tatasusunan bersekutu (jadual cincang) mengikut kekunci.
  • isih: Isih tatasusunan dengan nilai.
  • usort: Isih tatasusunan menggunakan fungsi perbandingan yang ditentukan pengguna.

Walau bagaimanapun, tiada satu pun daripada fungsi ini secara langsung menyokong pengisihan berdasarkan kunci dalam tatasusunan dalam.

Fungsi Isih Tersuai

Untuk mengatasi had ini, fungsi isihan tersuai boleh ditakrifkan untuk membandingkan nilai yang dikehendaki dalam tatasusunan dalam. Ini boleh dicapai menggunakan fungsi usort.

<code class="php">function cmp($a, $b) {
    return $b['name'] - $a['name'];
}</code>
Salin selepas log masuk

Fungsi ini membandingkan kekunci "nama" dalam tatasusunan dalam dan mengembalikan nilai negatif jika nama tatasusunan pertama lebih besar daripada nama tatasusunan kedua.

Isih Tatasusunan

Setelah fungsi perbandingan ditakrifkan, ia boleh digunakan untuk mengisih tatasusunan menggunakan fungsi usort.

<code class="php">usort($mydata, "cmp");</code>
Salin selepas log masuk

Penyelesaian Alternatif

Penyelesaian alternatif kepada fungsi isihan tersuai adalah untuk mencipta tatasusunan baharu yang mengandungi hanya nilai untuk diisih. Ini boleh dilakukan dengan gelung bersarang dan pernyataan bersyarat.

<code class="php">function array_sort($array, $on, $order=SORT_ASC) {
    // ...
    return $new_array;
}</code>
Salin selepas log masuk

Fungsi ini mengambil tatasusunan untuk diisih, kunci untuk mengisih dan susunan pilihan (menaik atau menurun). Ia mengembalikan tatasusunan baharu dengan data yang diisih.

Penggunaan

Fungsi array_sort boleh digunakan seperti berikut:

<code class="php">$mydata = [
    ['type' => 'suite', 'name' => 'A-Name'],
    ['type' => 'suite', 'name' => 'C-Name'],
    ['type' => 'suite', 'name' => 'B-Name']
];

$sorted_data = array_sort($mydata, 'name', SORT_ASC);

print_r($sorted_data);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Mengisih Tatasusunan Berbilang Dimensi Berdasarkan Nilai Tatasusunan Dalaman dalam PHP?. 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