Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengisih tatasusunan dua dimensi dalam php

Bagaimana untuk mengisih tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-17 16:37:235160semak imbas

Dalam pembangunan, kami selalunya perlu mengisih data untuk persembahan dan penggunaan yang lebih baik. Untuk tatasusunan dua dimensi, pengisihan boleh dilakukan mengikut medan data tertentu. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengisih tatasusunan dua dimensi.

1 Gunakan fungsi sort() untuk mengisih tatasusunan dua dimensi

sort() ialah fungsi terbina dalam PHP yang boleh mengisih nilai dalam tatasusunan secara menaik. pesanan. Apabila mengisih tatasusunan dua dimensi, fungsi sort() mengisih mengikut medan pertama tatasusunan secara lalai. Sebagai contoh, kita mempunyai tatasusunan dua dimensi:

$arr = array(
     array('id'=>2,'name'=>'li', 'age'=>20),
     array('id'=>1,'name'=>'zhang', 'age'=>22),
     array('id'=>3,'name'=>'wang', 'age'=>18)
);

Kita boleh menggunakan fungsi sort() untuk mengisih mengikut medan id:

sort($arr);
print_r($arr);

Hasil output ialah:

Array
(
    [0] => Array
        (
            [age] => 18
            [id] => 3
            [name] => wang
        )

    [1] => Array
        (
            [age] => 20
            [id] => 2
            [name] => li
        )

    [2] => Array
        (
            [age] => 22
            [id] => 1
            [name] => zhang
        )

)

Dapat dilihat bahawa selepas mengisih mengikut medan id, elemen dalam tatasusunan disusun mengikut tertib menaik.

2. Gunakan fungsi usort() untuk mengisih tatasusunan dua dimensi

Fungsi sort() hanya boleh mengisih mengikut medan pertama tatasusunan jika anda mahu mengisih mengikut yang lain medan, anda perlu Gunakan fungsi usort(). Fungsi usort() perlu lulus dalam fungsi panggil balik tersuai untuk menentukan peraturan pengisihan. Sebagai contoh, kami ingin mengisih mengikut medan umur:

function cmp($a, $b)
{
    if ($a['age'] == $b['age']) {
        return 0;
    }
    return ($a['age'] <$ b[&#39;age&#39;]) ? -1 : 1;
}

usort($arr, "cmp");
print_r($arr);

Hasil output ialah:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

Ia boleh dilihat bahawa selepas mengisih mengikut medan umur, unsur-unsur dalam tatasusunan adalah dalam susunan menaik mengikut umur.

3. Gunakan fungsi array_multisort() untuk mengisih tatasusunan dua dimensi

Fungsi array_multisort() ialah fungsi pengisihan yang sangat berkuasa yang boleh mengisih tatasusunan dua dimensi mengikut pelbagai keadaan. Jika anda ingin mengisih mengikut berbilang medan, anda boleh menggunakan fungsi array_multisort(). Sebagai contoh, kita perlu mengisih mengikut medan umur terlebih dahulu Jika umur adalah sama, kemudian mengisih mengikut id:

$ages = array();
$ids = array();
foreach ($arr as $key => $value) {
    $ages[$key] = $value['age'];
    $ids[$key] = $value['id'];
}
array_multisort($ages, SORT_ASC, $ids, SORT_ASC, $arr);

print_r($arr);

Hasil keluarannya ialah:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

Ia. boleh dilihat bahawa mengikut medan umur dan id Selepas medan diisih, unsur-unsur dalam tatasusunan diisih dalam tertib menaik mengikut umur, dan jika umurnya sama, ia diisih mengikut tertib menaik mengikut id.

Ringkasan:

Artikel ini memperkenalkan tiga kaedah untuk mengisih tatasusunan dua dimensi, menggunakan fungsi sort(), fungsi usort() dan fungsi array_multisort(). Dalam pembangunan, kaedah mana yang hendak dipilih bergantung pada keperluan khusus. Semoga artikel ini bermanfaat kepada semua.

Atas ialah kandungan terperinci Bagaimana untuk mengisih tatasusunan dua dimensi 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