Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengisih tatasusunan 2D menggunakan PHP

Bagaimana untuk mengisih tatasusunan 2D menggunakan PHP

PHPz
PHPzasal
2023-04-20 15:05:351603semak imbas

Mengisih tatasusunan dua dimensi ialah tugas yang sangat biasa dalam PHP. Apabila berurusan dengan jumlah data yang besar, menyusun tatasusunan boleh meningkatkan kecekapan kod anda. Untuk tatasusunan tunggal, anda boleh mengisih dalam susunan menaik dan menurun menggunakan fungsi seperti sort() dan rsort(). Walau bagaimanapun, untuk tatasusunan dua dimensi, lebih banyak kod diperlukan untuk melaksanakan pengisihan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengisih tatasusunan dua dimensi, termasuk pengisihan mengikut lajur tertentu, pengisihan berbilang lajur dan fungsi pengisihan tersuai.

1. Isih mengikut lajur yang ditentukan

Kita boleh menggunakan fungsi terbina dalam PHP usort() untuk mencapai pengisihan. Fungsi usort() adalah serupa dengan fungsi sort(), tetapi ia membolehkan kami menggunakan fungsi tersuai untuk mengisih. Untuk mengisih tatasusunan 2D mengikut lajur yang ditentukan, kita perlu menulis fungsi isihan tersuai dan menyerahkannya kepada fungsi usort(). Berikut ialah contoh mudah, mengisih mengikut lajur kedua dalam tatasusunan dua dimensi:

<?php 

function sortBySecondColumn($a, $b) {

    return $a[1] - $b[1];

}

$people = array(

    array(&#39;Tom&#39;, 23),

    array(&#39;Jack&#39;, 31),

    array(&#39;Mary&#39;, 27),

);

usort($people, &#39;sortBySecondColumn&#39;);

print_r($people);

?>

Outputnya ialah:

Array

(

    [0] => Array

        (

            [0] => Tom

            [1] => 23

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Jack

            [1] => 31

        )

)

Perbandingan sortBySecondColumn() fungsi tersuai kami Dapatkan yang kedua lajur tatasusunan $a dan $b dan susun mengikut susunan menaik atau menurun. Fungsi usort() akan menyusun semula tatasusunan mengikut fungsi pengisihan tersuai kami.

2. Pengisihan berbilang lajur

Jika kita perlu mengisih mengikut berbilang lajur, kita boleh menukar sedikit fungsi tersuai dan menambah lebih banyak syarat untuk setiap lajur. Untuk mengisih tatasusunan mengikut lajur pertama dan kedua, sila rujuk kod berikut:

<?php 

function sortByMultipleColumns($arr, $col1, $col2) {

    foreach ($arr as $key => $row) {

        $column1[$key] = $row[$col1];

        $column2[$key] = $row[$col2];

    }

    array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $arr);

    return $arr;

}

$people = array(

    array('Tom', 31),

    array('Tom', 25),

    array('Mary', 27),

    array('Mary', 29),

);

$people = sortByMultipleColumns($people, 0, 1);

print_r($people);

?>

Outputnya ialah:

Array

(

    [0] => Array

        (

            [0] => Mary

            [1] => 29

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Tom

            [1] => 31

        )

    [3] => Array

        (

            [0] => Tom

            [1] => 25

        )

)

Dalam kod di atas, kami mempunyai Tambah tatasusunan lajur dan kemudian gunakan fungsi array_multisort() untuk mengisih lajur pertama dalam tertib menaik dan lajur kedua dalam tertib menurun. Penggunaan akhir mengembalikan tatasusunan asal hasil yang diisih.

3. Fungsi isihan tersuai

Apabila menggunakan fungsi isihan tersuai, kita boleh mentakrifkan kriteria isihan untuk setiap elemen dalam tatasusunan. Fungsi tersuai harus mengembalikan nilai yang digunakan untuk membandingkan elemen lain dalam tatasusunan. Nilai pulangan ini boleh menjadi positif, negatif atau sifar, bergantung pada cara elemen dibandingkan. Berikut ialah contoh fungsi penapis mudah:

<?php 

function sortByLength($a, $b) {

    return strlen($a) - strlen($b);

}

$cities = array("Berlin", "Athens", "Madrid", "Rome", "Paris");

usort($cities, &#39;sortByLength&#39;);

print_r($cities);

?>

Outputnya ialah:

Array

(

    [0] => Rome

    [1] => Paris

    [2] => Berlin

    [3] => Athens

    [4] => Madrid

)

Dalam contoh di atas, kami mentakrifkan fungsi tersuai sortByLength(), yang Fungsi membandingkan panjang setiap elemen tatasusunan, menyusunnya dalam tertib menaik, dan mengembalikan nombor positif, negatif atau sifar.

Kesimpulan

Dalam PHP, kami mengisih tatasusunan dua dimensi dengan menggunakan fungsi usort(). Isih mengikut lajur yang ditentukan hanya memerlukan kami menulis fungsi isihan tersuai dan menyerahkannya kepada fungsi usort(). Kami juga boleh mengisih mengikut berbilang lajur dengan menambahkan berbilang syarat. Fungsi isihan tersuai membolehkan kami menentukan lebih banyak kriteria pengisihan dalam tatasusunan. Setiap pengaturcara harus biasa dengan teknik ini apabila memanipulasi tatasusunan dua dimensi.

Atas ialah kandungan terperinci Bagaimana untuk mengisih tatasusunan 2D menggunakan 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