Array_Filter () ist eine der häufig verwendeten Funktionen in PHP, die zum Filtern von Elementen in einem Array verwendet wird. Normalerweise gibt Array_Filter () nur den Array -Wert zurück, der den Kriterien erfüllt, und setzt den Schlüsselnamen des Arrays standardmäßig zurück, dh die kontinuierlichen Ganzzahl -Schlüssellennamen ab 0. Manchmal möchten wir jedoch in der Lage sein, die ursprünglichen Schlüsselnamen beizubehalten, wenn das Array filtet. In diesem Artikel wird erläutert, wie die Schlüsselnamen eines Arrays bei der Verwendung von Array_filter () aufbewahrt werden.
Bevor wir darüber diskutieren, wie Sie Schlüsseldamen erhalten, schauen wir uns zunächst die grundlegende Verwendung von Array_Filter () an. Die Funktion array_filter () iteriert über das Array und entscheidet, ob Elemente im Array basierend auf dem Rückgabewert der Rückruffunktion beibehalten werden sollen. Wenn die Rückruffunktion true zurückgibt, wird das Element beibehalten, sonst wird es entfernt.
<?php
$array = [1, 2, 3, 4, 5];
$result = array_filter($array, function($value) {
return $value % 2 === 0; // Nur sogar Zahlen bleiben beibehalten
});
print_r($result);
?>
Ausgangsergebnis:
Array
(
[1] => 2
[3] => 4
)
Wie oben gezeigt, filtert Array_filter () das Array, setzt jedoch den Schlüsselnamen zurück. In diesem Beispiel beginnt der Ausgangsarrayschlüsselname von Array_filter () bei 0 , und wir möchten den Schlüsselnamen des ursprünglichen Arrays bewahren.
PHP liefert eine gemeinsame Lösung unter Verwendung des dritten Parameterarray_Filter_USE_KEY von Array_Filter () . Bei Verwendung dieser Konstante führt Array_filter () die Rückruffunktion anstelle des Wertes anstelle des Werts aus, damit der Schlüsselname beim Filterung erhalten bleiben kann.
<?php
$array = [1 => 10, 2 => 20, 3 => 30, 4 => 40, 5 => 50];
$result = array_filter($array, function($key) {
return $key % 2 === 0; // Halten Sie sogar Schlüssel
}, ARRAY_FILTER_USE_KEY);
print_r($result);
?>
Ausgangsergebnis:
Array
(
[2] => 20
[4] => 40
)
In diesem Beispiel verwenden wir array_filter_use_key so, dass die Parameter der Rückruffunktion die Schlüssel des Arrays sind, nicht die Werte. Auf diese Weise können wir das Array basierend auf den Bedingungen des Schlüsselnamens filtern, während wir den ursprünglichen Schlüsselnamen beibehalten.
Angenommen, wir haben ein Array, das mehrere URL -Adressen enthält. Wir möchten die Adressen, die den Domänennamen m66.net enthält, herausfiltern und den ursprünglichen Schlüsselnamen aufbewahren.
<?php
$urls = [
'a' => 'http://example.com/page1',
'b' => 'https://m66.net/page2',
'c' => 'http://m66.net/page3',
'd' => 'https://example.com/page4',
];
$result = array_filter($urls, function($url) {
return strpos($url, 'm66.net') !== false; // Filtern Sie die Aufnahme heraus m66.net von URL
});
print_r($result);
?>
Ausgangsergebnis:
Array
(
[b] => https://m66.net/page2
[c] => http://m66.net/page3
)
Wie oben gezeigt, filtert Array_filter () URL -Adressen mit M66.net und behält ihre Schlüsselnamen ( B und C ) bei.
Die Funktion array_filter () ist sehr leistungsfähig und kann zum Filter von Arrays verwendet werden. Standardmäßig wird der Schlüsselname des Arrays zurückgesetzt. Wenn wir den Schlüsselnamen des Array erhalten möchten, geben wir einfach die Konstante Array_filter_use_key an, wenn wir Array_filter () verwenden, damit die Rückruffunktion die Taste des Arrays akzeptiert, nicht nur den Wert.
Auf diese Weise können Sie das Array flexibel entsprechend den Bedingungen des Schlüsselnamens oder des Schlüssellennamens filtern und den ursprünglichen Schlüsselnamen beibehalten, um die Struktur des Array intakt zu halten.