Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk mengisih tatasusunan menggunakan fungsi perbandingan tersuai dalam PHP dan mengekalkan nama kunci?

Bagaimana untuk mengisih tatasusunan menggunakan fungsi perbandingan tersuai dalam PHP dan mengekalkan nama kunci?

WBOY
WBOYasal
2024-05-04 11:51:01554semak imbas

Menggunakan fungsi perbandingan tersuai dalam PHP boleh mengisih tatasusunan dan mengekalkan nama kunci. Untuk melakukan ini, anda boleh menggunakan fungsi usort(), yang mengambil tatasusunan dan fungsi panggil balik sebagai parameter. Fungsi panggil balik menerima dua elemen tatasusunan dan mengembalikan integer (-1, 0, atau 1) yang menunjukkan susunan isihan.

PHP 中如何使用自定义比较函数对数组进行排序,并保留键名?

Gunakan fungsi perbandingan tersuai untuk mengisih tatasusunan dalam PHP dan mengekalkan nama utama

Menggunakan fungsi perbandingan tersuai untuk mengisih tatasusunan ialah operasi biasa dalam operasi tatasusunan. Dalam PHP, ini boleh dicapai dengan mudah menggunakan fungsi usort(). usort() 函数轻松实现此目的。

语法

usort(array, callable)
  • array:要排序的数组。
  • callable:用于比较数组元素的回调函数。它必须接受两个参数(两个数组元素),并返回一个整数(-1、0 或 1)。

实战案例

以下示例展示了如何使用自定义比较函数对数组中的键名进行排序,同时保留键名:

<?php

// 待排序的数组
$arr = [
    'a' => 10,
    'c' => 5,
    'b' => 20,
];

// 自定义比较函数
$compare = function ($a, $b) {
    return strcmp($a['key'], $b['key']);
};

usort($arr, $compare);

// 输出排序后的数组
print_r($arr);

在这个例子中,compare 函数将两个键名($a['key']$b['key'])作为参数,并使用 strcmp() 函数对其进行比较。strcmp() 函数返回 -1、0 或 1,指示第一个字符串是否小于、等于或大于第二个字符串。

调用 usort() 函数时,它将指定的比较函数应用于 $arr 数组中的每个元素。如果 compare

Sintaks

Array
(
    [a] => 10
    [b] => 20
    [c] => 5
)
  • tatasusunan: Tatasusunan untuk diisih.
  • boleh dipanggil: Fungsi panggil balik yang digunakan untuk membandingkan elemen tatasusunan. Ia mesti menerima dua argumen (dua elemen tatasusunan) dan mengembalikan integer (-1, 0, atau 1).

Kes praktikal

Contoh berikut menunjukkan cara menggunakan fungsi perbandingan tersuai untuk mengisih nama kunci dalam tatasusunan sambil mengekalkan nama kunci:

rrreee

Dalam contoh ini, Fungsi compare mengambil dua nama kunci ($a['key'] dan $b['key']) sebagai parameter dan menggunakan The Fungsi strcmp() membandingkannya. Fungsi strcmp() mengembalikan -1, 0 atau 1, menunjukkan sama ada rentetan pertama kurang daripada, sama dengan atau lebih besar daripada rentetan kedua.

Apabila fungsi usort() dipanggil, ia menggunakan fungsi perbandingan yang ditentukan untuk setiap elemen dalam tatasusunan $arr. Jika fungsi compare mengembalikan -1, elemen pertama diisih sebelum elemen kedua jika ia mengembalikan 1, sebaliknya jika ia mengembalikan 0, susunan elemen kekal tidak berubah; 🎜🎜Keluaran akhir ialah: 🎜rrreee🎜 Tatasusunan diisih dari kecil ke besar mengikut nama kunci, sambil mengekalkan nama kunci. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengisih tatasusunan menggunakan fungsi perbandingan tersuai dalam PHP dan mengekalkan nama kunci?. 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