Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengisih Tatasusunan Berbilang Dimensi Berdasarkan Nilai Tatasusunan Dalaman dalam PHP?

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

Barbara Streisand
Barbara Streisandasal
2024-11-03 21:30:29387semak imbas

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"
    ]
]

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>

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>

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>

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>

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!

Kenyataan:
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 sebelumnya:Ayat PekelilingArtikel seterusnya:Ayat Pekeliling