Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Funktion explore-array_filter()

PHP-Funktion explore-array_filter()

WBOY
WBOYOriginal
2023-06-20 08:01:421681Durchsuche

In der PHP-Programmierung sind Arrays einer der häufigsten und wichtigsten Datentypen. Die Funktionsbibliothek in PHP stellt außerdem zahlreiche Array-Verarbeitungsfunktionen bereit, eine der wichtigen Funktionen ist array_filter(). In diesem Artikel werden die allgemeinen Nutzungs- und Implementierungsprinzipien der Funktion array_filter() untersucht. array_filter()。本文将探究 array_filter() 函数的常见用法和实现原理。

基本用法

array_filter() 函数的主要作用是过滤数组中的元素。在使用时,我们需要传入一个数组作为第一个参数,并可选地传入第二个参数回调函数用于对元素进行过滤。回调函数是一个可选的参数,如果不传入,则默认会过滤掉所有的为“假”的元素,如 nullfalse0'' 等。

下面是一个简单的示例,演示了如何使用 array_filter() 函数对数组进行过滤:

// 定义一个示例数组
$numbers = array(100, 2, -3, 4, 5, -6);

// 过滤回调函数,过滤掉小于等于 0 的元素
function positive($n) {
    return $n > 0;
}

// 过滤数组
$filtered = array_filter($numbers, "positive");

// 打印过滤后的数组
print_r($filtered);

在上述示例中,我们定义了一个 $numbers 数组,其中包含了一些数字元素。我们同时定义了一个回调函数 positive(),该函数的作用是,当元素值大于 0 时返回 true,否则返回 false。最后,我们调用 array_filter() 函数并传入了数组 $numbers 和回调函数 positive(),以此来过滤数组。运行上述示例会输出以下结果:

Array
(
    [0] => 100
    [1] => 2
    [3] => 4
    [4] => 5
)

可以看到,最终 $filtered 数组中只保留了数字元素的正数部分,符合回调函数的过滤条件。

除了传入回调函数之外,array_filter() 函数还支持传入一个额外的参数,该参数将作为回调函数的第二个参数传入。这在某些情况下可以有用,例如,在过滤数组时需要用数组元素的下标作为参考条件。下面是一个使用 $key 参数的示例:

// 定义一个示例数组
$fruits = array("apple", "banana", "cherry", "date");

// 过滤回调函数,过滤掉下标是偶数的元素
function odd_indices($value, $index) {
    return $index % 2 != 0;
}

// 过滤数组,并保留下标是奇数的元素
$filtered = array_filter($fruits, "odd_indices", ARRAY_FILTER_USE_BOTH);

// 打印过滤后的数组
print_r($filtered);

在上述示例中,我们定义了一个 $fruits 数组,该数组包含了一些水果元素。我们还定义了一个回调函数 odd_indices(),该函数会将下标为偶数的数组元素过滤掉。最后,我们传入了 ARRAY_FILTER_USE_BOTH 参数,来指定回调函数需要两个参数。运行上述示例会输出以下结果:

Array
(
    [1] => banana
    [3] => date
)

可以看到,最终的 $filtered 数组只保留了下标是奇数的元素,而偶数下标的元素被过滤掉了。

实现原理

理解 array_filter() 函数是如何实现的,也有助于我们更好地使用它。在 PHP 实现中,array_filter() 函数主要通过遍历数组来实现过滤。在实际过程中,当我们传入一个回调函数时,array_filter() 函数会对数组中的每一个元素都调用一次该回调函数。如果回调函数返回 true,则表示这个元素需要保留下来,否则会被过滤掉。

还有一些需要注意的地方,如当回调函数返回空值时,该元素也会被过滤掉。此外,如果传入了额外的参数,则该参数将作为回调函数的第二个参数传入回调函数中。

当我们不传入回调函数时,默认过滤掉所有“假”的元素(例如:nullfalse0、空字符串等)。在实现中,array_filter() 函数会将所有元素转换为布尔值,然后再进行过滤。如果元素转换后为 true,则表示该元素保留下来;否则,过滤掉该元素。

虽然 array_filter() 函数的实现看起来很简单,但是它提供了一种方便且强大的方法来过滤数组元素。对于 PHP 开发人员,熟练掌握 array_filter()

Grundlegende Verwendung

array_filter() Die Hauptfunktion der Funktion besteht darin, die Elemente im Array zu filtern. Wenn wir es verwenden, müssen wir ein Array als ersten Parameter übergeben und optional als zweiten Parameter eine Rückruffunktion zum Filtern von Elementen übergeben. Die Callback-Funktion ist ein optionaler Parameter. Wenn sie nicht übergeben wird, werden standardmäßig alle „falschen“ Elemente herausgefiltert, z. B. null, false, 0, <code>'' usw. 🎜🎜Hier ist ein einfaches Beispiel, das zeigt, wie man ein Array mit der Funktion array_filter() filtert: 🎜rrreee🎜Im obigen Beispiel haben wir ein $numbers-Array definiert, das enthält numerische Elemente. Wir haben auch eine Rückruffunktion positive() definiert. Die Funktion dieser Funktion besteht darin, true zurückzugeben, wenn der Elementwert größer als 0 ist, andernfalls gibt sie false . Abschließend filtern wir das Array, indem wir die Funktion <code>array_filter() aufrufen und das Array $numbers und die Rückruffunktion positive() übergeben. Wenn Sie das obige Beispiel ausführen, werden die folgenden Ergebnisse ausgegeben: 🎜rrreee🎜Wie Sie sehen können, wird nur der positive Teil der numerischen Elemente im endgültigen $filtered-Array beibehalten, das die Filterbedingungen des Rückrufs erfüllt Funktion. 🎜🎜Zusätzlich zur Übergabe der Callback-Funktion unterstützt die Funktion array_filter() auch die Übergabe eines zusätzlichen Parameters, der als zweiter Parameter der Callback-Funktion übergeben wird. Dies kann in bestimmten Situationen nützlich sein, beispielsweise wenn Sie ein Array filtern und den Index des Array-Elements als Referenzbedingung verwenden müssen. Hier ist ein Beispiel mit dem Parameter $key: 🎜rrreee🎜Im obigen Beispiel haben wir ein Array $fruits definiert, das einige Fruchtelemente enthält. Wir definieren auch eine Rückruffunktion odd_indices(), die Array-Elemente mit geraden Indizes herausfiltert. Schließlich haben wir den Parameter ARRAY_FILTER_USE_BOTH übergeben, um anzugeben, dass die Rückruffunktion zwei Parameter erfordert. Wenn Sie das obige Beispiel ausführen, werden die folgenden Ergebnisse ausgegeben: 🎜rrreee🎜Wie Sie sehen können, behält das endgültige $filtered-Array nur Elemente mit ungeraden Indizes bei, während Elemente mit geraden Indizes herausgefiltert werden. 🎜

Implementierungsprinzip

🎜Wenn wir verstehen, wie die Funktion array_filter() implementiert ist, können wir sie auch besser nutzen. In der PHP-Implementierung implementiert die Funktion array_filter() hauptsächlich die Filterung durch Durchlaufen des Arrays. Wenn wir im eigentlichen Prozess eine Rückruffunktion übergeben, ruft die Funktion array_filter() die Rückruffunktion einmal für jedes Element im Array auf. Wenn die Rückruffunktion true zurückgibt, bedeutet dies, dass dieses Element beibehalten werden muss, andernfalls wird es herausgefiltert. 🎜🎜Es gibt auch einige Dinge zu beachten, z. B. wenn die Rückruffunktion einen Nullwert zurückgibt, wird das Element ebenfalls herausgefiltert. Wenn außerdem ein zusätzlicher Parameter übergeben wird, wird dieser Parameter als zweiter Parameter der Rückruffunktion an die Rückruffunktion übergeben. 🎜🎜Wenn wir die Rückruffunktion nicht übergeben, werden alle „falschen“ Elemente standardmäßig herausgefiltert (zum Beispiel: null, false, 0 Code>, leere Zeichenfolge usw.). Bei der Implementierung konvertiert die Funktion <code>array_filter() alle Elemente vor dem Filtern in boolesche Werte. Wenn das Element in true konvertiert wird, bedeutet dies, dass das Element beibehalten wird; andernfalls wird das Element herausgefiltert. 🎜🎜Obwohl die Implementierung der Funktion array_filter() einfach aussieht, bietet sie eine praktische und leistungsstarke Möglichkeit, Array-Elemente zu filtern. Für PHP-Entwickler bedeutet die Kenntnis der Verwendungs- und Implementierungsprinzipien der Funktion array_filter() viel Komfort bei der tatsächlichen Entwicklung. 🎜

Das obige ist der detaillierte Inhalt vonPHP-Funktion explore-array_filter(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn