Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan fungsi array_filter dalam PHP untuk menapis tatasusunan berdasarkan fungsi panggil balik

Cara menggunakan fungsi array_filter dalam PHP untuk menapis tatasusunan berdasarkan fungsi panggil balik

PHPz
PHPzasal
2023-06-26 13:34:03787semak imbas

Dalam pembangunan berasaskan web, PHP ialah bahasa yang digunakan secara meluas kerana kesederhanaan dan fleksibilitinya. PHP boleh mengendalikan pelbagai jenis tugas, termasuk memanipulasi tatasusunan dan menapis elemen tatasusunan. Dalam PHP, terdapat beberapa fungsi yang boleh menapis elemen tatasusunan Salah satu fungsi yang paling berkuasa ialah fungsi array_filter. Fungsi ini sangat berguna kerana ia boleh menapis elemen tatasusunan berdasarkan fungsi panggil balik tertentu dan hanya mengekalkan elemen yang memenuhi syarat. Seterusnya, kita akan membincangkan secara terperinci cara menggunakan fungsi array_filter dalam PHP untuk menapis tatasusunan. Sintaks untuk menggunakan fungsi array_filter函数。这个函数非常有用,因为它可以根据特定的回调函数,对数组的元素进行过滤,只保留符合条件的元素。接下来,我们将详细讨论PHP中如何使用array_filter函数来过滤数组。

array_filter函数的使用语法如下:

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

第一个参数:待过滤的数组。

第二个参数(可选):回调函数,用于根据自己的条件测试数组元素。如果不指定此参数,则仅删除等效于FALSE的元素。

第三个参数(可选):标志,用于设定回调函数的行为。可以选择以下标志:

  • ARRAY_FILTER_USE_KEY - 传递键名而不是值给回调函数。
  • ARRAY_FILTER_USE_BOTH - 传递值和键名给回调函数。

注意:array_filter函数不会修改原始数组,而是返回一个新的过滤数组。

接下来,我们将通过一些示例来展示如何使用array_filter函数。

示例一

<?php
function testFilter($value) {
    return($value > 2 && $value < 6);
}

$a = array(1, 2, 3, 4, 5, 6);
$b = array_filter($a, "testFilter");

var_dump($b);
?>

运行结果为:

array(3) {
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}

这个示例中,我们定义了一个testFilter回调函数,这个函数会测试数组元素是否在2到6之间(不包括2和6)。我们然后将此函数传递给array_filter函数,并将需要处理的数组作为第一个参数。新数组$b仅包含满足条件的元素,即3,4,5。在这个示例中我们使用了过滤器回调函数,函数名作为一个字符串传递给array_filter函数。

示例二

<?php
function testFilter2($key, $value) {
    return($key > 2 && $value > 2);
}

$a = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$b = array_filter($a, "testFilter2", ARRAY_FILTER_USE_BOTH);

var_dump($b);
?>

运行结果为:

array(3) {
  ["c"]=>
  int(3)
  ["d"]=>
  int(4)
  ["e"]=>
  int(5)
}

在这个示例中,我们定义了一个testFilter2回调函数,并使用了ARRAY_FILTER_USE_BOTH标志将键名和值参数传递给回调函数。在此示例中,回调函数只会返回键名和值都大于2的元素。 这个示例中返回的过滤数组中仅包含“c”,“d”和“e”元素。

示例三

<?php
function testFilter3($value) {
    return $value !== '' && $value !== null && $value !== false;
}

$a = array("a", "", "b", null, "c", false);
$b = array_filter($a, "testFilter3");

var_dump($b);
?>

运行结果为:

array(3) {
  [0]=>
  string(1) "a"
  [2]=>
  string(1) "b"
  [4]=>
  string(1) "c"
}

这个示例中,我们定义了一个testFilter3回调函数,这个函数用于根据值是否与空字符串、NULL或FALSE等价来过滤数组元素。在这个示例中,新数组$b仅包含原始数组中不为空,不为NULL或不为FALSE的元素。

总结:

array_filter

array_filter adalah seperti berikut: 🎜rrreee🎜Parameter pertama: tatasusunan yang akan ditapis. 🎜🎜Parameter kedua (pilihan): fungsi panggil balik, digunakan untuk menguji elemen tatasusunan mengikut keadaan anda sendiri. Jika parameter ini tidak dinyatakan, hanya elemen yang bersamaan dengan FALSE dialih keluar. 🎜🎜Parameter ketiga (pilihan): bendera, digunakan untuk menetapkan gelagat fungsi panggil balik. Bendera berikut boleh dipilih: 🎜
  • ARRAY_FILTER_USE_KEY - Hantar nama kunci dan bukannya nilai kepada fungsi panggil balik.
  • ARRAY_FILTER_USE_BOTH - Hantar nilai dan nama kunci kepada fungsi panggil balik.
🎜Nota: Fungsi array_filter tidak mengubah suai tatasusunan asal, tetapi mengembalikan tatasusunan ditapis baharu. 🎜🎜Seterusnya, kami akan menunjukkan beberapa contoh cara menggunakan fungsi array_filter. 🎜

Contoh 1

rrreee🎜Hasil yang sedang dijalankan ialah: 🎜rrreee🎜Dalam contoh ini, kami mentakrifkan fungsi panggil balik testFilter, yang akan menguji sama ada elemen tatasusunan adalah antara 2 dan 6 bilik (tidak termasuk 2 dan 6). Kami kemudian menghantar fungsi ini kepada fungsi array_filter dengan tatasusunan untuk diproses sebagai parameter pertama. Tatasusunan baharu $b hanya mengandungi elemen yang memenuhi syarat, iaitu 3, 4 dan 5. Dalam contoh ini kita menggunakan fungsi panggil balik penapis, nama fungsi dihantar sebagai rentetan kepada fungsi array_filter. 🎜

Contoh 2

rrreee🎜Hasil yang sedang dijalankan ialah: 🎜rrreee🎜Dalam contoh ini, kami mentakrifkan fungsi panggil balik testFilter2 dan menggunakan ARRAY_FILTER_USE_BOTH Flags pass keyname dan argumen nilai kepada fungsi panggil balik. Dalam contoh ini, fungsi panggil balik hanya akan mengembalikan elemen yang nama dan nilai kuncinya lebih besar daripada 2. Tatasusunan ditapis yang dikembalikan dalam contoh ini hanya mengandungi elemen "c", "d" dan "e". 🎜

Contoh 3

rrreee🎜Hasil yang sedang dijalankan ialah: 🎜rrreee🎜Dalam contoh ini, kami mentakrifkan fungsi panggil balik testFilter3, yang digunakan untuk menentukan sama ada nilai itu sepadan dengan rentetan kosong , NULL atau FALSE bersamaan dengan elemen tatasusunan penapis. Dalam contoh ini, tatasusunan baharu $b mengandungi hanya elemen daripada tatasusunan asal yang tidak kosong, NULL atau FALSE. 🎜🎜Ringkasan: 🎜🎜 Fungsiarray_filter ialah fungsi yang sangat berguna dalam fungsi pemprosesan tatasusunan PHP Ia boleh digunakan untuk menapis tatasusunan sedia ada untuk mencipta tatasusunan yang terdiri daripada elemen selepas semakan bersyarat. Dalam artikel ini, kami telah menyediakan contoh untuk kes penggunaan berbeza yang boleh membantu anda memahami fungsi dan penggunaannya dengan lebih baik, yang akan membantu anda menapis tatasusunan dengan lebih pantas dan mengkategorikan elemen tatasusunan dalam PHP. 🎜

Atas ialah kandungan terperinci Cara menggunakan fungsi array_filter dalam PHP untuk menapis tatasusunan berdasarkan fungsi panggil balik. 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