In PHP sind Array_filter und Array_Map zwei sehr häufig verwendete und leistungsstarke Array -Verarbeitungsfunktionen. Sie haben ihre eigenen Verwendung, wenn sie alleine verwendet werden, aber wenn wir sie kombinieren, können wir die Einfachheit und Effizienz des Codes erheblich verbessern. In diesem Artikel wird die Verwendung dieser beiden Funktionen im Detail eingebracht und praktische Tipps und Best Practices für ihre Kombination weitergeben.
Array_filter
Diese Funktion wird verwendet, um Arrayelemente zu filtern. Eine Rückruffunktion bestimmt, ob jedes Element den Zustand erfüllt, und gibt ein neues Array zurück, das aus allen Elementen besteht, die die Bedingung erfüllen.
$filtered = array_filter($array, function($item) {
return $item > 10; // Filter ist größer als10Elemente
});
Array_Map
Diese Funktion wird verwendet, um in jedem Element des Arrays denselben Rückrufvorgang durchzuführen und das verarbeitete Neuarray zurückzugeben.
$mapped = array_map(function($item) {
return $item * 2; // Multiplizieren Sie jedes Element mit2
}, $array);
Nach der Filterung: MAP : Verwenden Sie zuerst Array_filter , um Elemente herauszufiltern, die die Bedingungen erfüllen, und dann mit Array_Map diese Elemente einheitlich verarbeiten.
Nach dem Zuordnen filtern : Verwenden Sie zuerst Array_Map , um das Array -Element -Format zu konvertieren, und verwenden Sie dann Array_filter , um die Ergebnisse zu filtern, die den Anforderungen entsprechen.
Einmaliger Kettenbetrieb : Verwenden Sie in Kombination, um prägnante und intuitive Kettencode zu schreiben, wodurch lange Schleifen geschrieben werden.
<?php
$numbers = [1, 5, 12, 18, 7, 25];
// Filtern Sie das größer als10Zahlen
$filtered = array_filter($numbers, function($num) {
return $num > 10;
});
// 再对过滤后Zahlen做平方操作
$squared = array_map(function($num) {
return $num * $num;
}, $filtered);
print_r($squared);
?>
Ausgabe:
Array
(
[2] => 144
[3] => 324
[5] => 625
)
Verwenden Sie in diesem Beispiel zuerst Array_filter , um Elemente zu entfernen, die nicht den Bedingungen erfüllen, um zu vermeiden, dass Array_Map nutzlose Arbeiten leistet.
PHP 7.4+ unterstützt Pfeilfunktionen und ist in Kombination mit Kettenaufrufen präziser:
<?php
$numbers = [1, 5, 12, 18, 7, 25];
$result = array_map(
fn($num) => $num * $num,
array_filter($numbers, fn($num) => $num > 10)
);
print_r($result);
?>
<?php
$urls = [
'http://example.com',
'ftp://fileserver.com',
'https://secure.com',
];
// Konvertieren Sie zuerst in Kleinbuchstabenprotokoll
$lowercased = array_map(fn($url) => strtolower($url), $urls);
// Wieder herausfilternhttpDer Beginn der VereinbarungURL
$httpUrls = array_filter($lowercased, fn($url) => str_starts_with($url, 'http'));
print_r($httpUrls);
?>
Der zweite Parameter von Array_filter Array_filter_USE_KEY kann verwendet werden, um entsprechend dem Schlüsselnamen zu filtern und den Wert dann in Kombination mit Array_Map zu verarbeiten:
<?php
$data = [
'name' => 'Alice',
'age' => 25,
'email' => '[email protected]',
'score' => 92,
];
// Filter hält den Schlüsselnamen nur als Zeichenfolge und die Länge ist größer als3Elemente
$filtered = array_filter($data, fn($key) => strlen($key) > 3, ARRAY_FILTER_USE_KEY);
// Konvertieren Sie die Werte in Zeichenfolgenformat
$mapped = array_map(fn($value) => (string)$value, $filtered);
print_r($mapped);
?>
Filtern Sie zuerst und dann ab, um die unnötige Verarbeitung zu verringern.
MAP und dann filtern Sie zuerst und das Datenformat oder die Datenstruktur können zuerst für eine einfache Filterung einheitlich sein.
Verwenden Sie Pfeilfunktionen und Kettenaufrufe, um Cleaner Code zu schreiben.
Kombiniert mit Array_filter_use_key , um Schlüsselnamen zu filtern.
Kombination verwendet die Code -Logik klarer, vermeiden komplexe Schleifen und verbessert die Wiederverwendbarkeit und Lesbarkeit der Code.
Durch das Beherrschen der Kombination und Verwendung der Fähigkeiten dieser beiden Funktionen können Sie bei der Behandlung von Arrays in der täglichen PHP -Entwicklung praktischer werden und effizientes und elegantes Code schreiben.
<?php
// Umfassende Beispiele:Filtern Sie leere Werte heraus,Saite in Großbuchstaben konvertieren,Rückgabeergebnis
$data = ['apple', '', 'Banana', null, 'Cherry'];
$result = array_map(
fn($item) => strtoupper($item),
array_filter($data, fn($item) => !empty($item))
);
print_r($result);
?>