Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan fungsi array_udiff untuk melakukan perbezaan tatasusunan dalam PHP (anda boleh menyesuaikan fungsi perbandingan)

Cara menggunakan fungsi array_udiff untuk melakukan perbezaan tatasusunan dalam PHP (anda boleh menyesuaikan fungsi perbandingan)

WBOY
WBOYasal
2023-06-26 13:32:26817semak imbas

Dalam PHP, tatasusunan ialah jenis data yang sangat biasa digunakan, dan ia juga sangat penting untuk pengendalian dan pemprosesan tatasusunan. Apabila memproses tatasusunan, selalunya perlu untuk melaksanakan operasi seperti membandingkan dan mengambil perbezaan antara berbilang tatasusunan.

PHP menyediakan banyak fungsi untuk tatasusunan Fungsi array_udiff() ialah fungsi yang melibatkan perbezaan tatasusunan dan mengembalikan tatasusunan. Artikel ini akan memperkenalkan secara terperinci cara menggunakan fungsi array_udiff() dan cara menyesuaikan fungsi perbandingan untuk melaksanakan perbezaan tatasusunan.

1. Penggunaan asas fungsi array_udiff()

Sintaks asas fungsi array_udiff() adalah seperti berikut:

array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Antaranya, parameter $array1, $array2 dan $... berikutnya ialah berbilang tatasusunan untuk dibandingkan, $ value_compare_func ialah fungsi perbandingan tersuai.

Nilai pulangan bagi fungsi ini ialah tatasusunan, menunjukkan nilai dalam tatasusunan $array1 yang berbeza daripada tatasusunan lain.

Berikut ialah contoh mudah yang menunjukkan cara menggunakan fungsi array_udiff():

<?php
function compare($a, $b){
    if($a === $b){ //值相等
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$array1 = array(1, 2, 3, 4, 5);
$array2 = array(5, 6, 7, 8, 9);

$result = array_udiff($array1, $array2, 'compare');
print_r($result);
?>

Kod di atas akan mengeluarkan array $result yang mengandungi 1, 2, 3, 4. Nilai ini wujud dalam $array1, tetapi dalam Tidak wujud dalam $array2. Keputusan ini adalah sama seperti yang kita bayangkan, kerana tatasusunan $array1 dan $array2 hanya mempunyai nilai yang sama iaitu 5, jadi set perbezaan hendaklah semua elemen dalam $array1 kecuali 5.

2. Pelaksanaan fungsi perbandingan tersuai

Apabila menggunakan fungsi array_udiff(), anda perlu menyesuaikan fungsi perbandingan, yang digunakan untuk membandingkan sama ada dua elemen adalah sama.

Definisi fungsi perbandingan perlu memenuhi syarat berikut:

  1. Nilai pulangan fungsi mestilah nilai integer
  2. Nilai integer mewakili hubungan saiz antara dua elemen, khususnya:

    • Jika $; a adalah lebih besar daripada $ b, maka fungsi harus mengembalikan integer positif (nombor lebih besar daripada 0), seperti 1
    • Jika $a kurang daripada $b, maka fungsi harus mengembalikan integer negatif (nombor kurang; daripada 0), seperti -1;
  3. Fungsi perbandingan boleh ditulis mengikut situasi sebenar Sebagai contoh, anda boleh menggunakan fungsi berikut untuk membandingkan panjang dua rentetan:
function compare_length($a, $b){
    $len_a = strlen($a);
    $len_b = strlen($b);
    if($len_a === $len_b){ //值相等
        return 0;
    }
    return ($len_a > $len_b) ? 1 : -1;
}

Dalam fungsi compare_length() di atas, kami menggunakan strlen(. ) berfungsi untuk mendapatkan Panjang $a dan $b, kemudian membandingkan dua panjang, dan mengembalikan nilai yang sepadan.

Sudah tentu, fungsi perbandingan tidak semestinya hanya berkaitan dengan nilai elemen Ia juga boleh dibandingkan berdasarkan atribut lain, seperti atribut tertentu objek yang terkandung dalam tatasusunan, dll. Ini harus ditulis mengikut. kepada keadaan sebenar.

Selepas menyesuaikan fungsi perbandingan, kita boleh menggunakan fungsi array_udiff() untuk melakukan perbezaan tatasusunan. Sebagai contoh, kami mempunyai dua tatasusunan berikut:

$array1 = array('hello', 'world', 'foo', 'bar');
$array2 = array('world', 'bar', 'php');

Kami ingin mencari elemen dalam $array1 yang berbeza daripada $array2 Anda boleh menggunakan kod berikut:

function compare_in_array($a, $b){
    if(in_array($a, $b)){ //值在另一个数组中存在
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$result = array_udiff($array1, $array2, 'compare_in_array');
print_r($result);

Memandangkan dalam fungsi perbandingan compare_in_array(), ia adalah. menilai sama ada $a Wujud dalam tatasusunan $b, oleh itu, elemen dengan nilai yang sama seperti $array2 akan dikecualikan daripada perbezaan tatasusunan.

3. Kesimpulan

array_udiff() fungsi boleh membandingkan dan berbeza daripada berbilang tatasusunan dengan menyesuaikan fungsi perbandingan, kami boleh menentukan kaedah perbandingan elemen berdasarkan keperluan kami sendiri dan tatasusunan proses dengan lebih fleksibel.

Perlu diambil perhatian bahawa apabila menyesuaikan fungsi perbandingan, ia mesti memenuhi keperluan bahawa nilai pulangannya ialah integer, dan logik perbandingan sebenar mesti ditulis mengikut keperluan.

Atas ialah kandungan terperinci Cara menggunakan fungsi array_udiff untuk melakukan perbezaan tatasusunan dalam PHP (anda boleh menyesuaikan fungsi perbandingan). 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