Bei der Verarbeitung von Arrays in PHP werden häufig zwei sehr praktische Funktionen verwendet: Array_Change_key_Case () und Array_filter () . Diese beiden Funktionen werden für die Summe verwendet. Viele Entwickler fragen sich möglicherweise bei der Verwendung dieser beiden Funktionen: Ist die Reihenfolge der Anrufe dieser beiden Funktionen wichtig? Wird es die endgültigen Verarbeitungsergebnisse beeinflussen?
Dieser Artikel beantwortet diese Frage durch Analyse und Beispiele.
Diese Funktion wird verwendet, um die Schlüsselnamen eines Arrays in alle Kleinbuchstaben oder Großbuchstaben umzuwandeln und wie folgt verwendet:
array_change_key_case(array $array, int $case = CASE_LOWER): array
$ case kann case_lower (Standard) oder case_upper sein.
Beispiel:
$arr = ['Name' => 'Tom', 'Age' => 25];
print_r(array_change_key_case($arr, CASE_LOWER));
// Ausgabe:Array ( [name] => Tom [age] => 25 )
Diese Funktion wird verwendet, um Elemente in einem Array zu filtern, und Sie können die Rückruffunktion anpassen, um zu entscheiden, welche Elemente beibehalten werden sollen.
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
Standardmäßig entfernt es Elemente mit "falschen Werten" wie Falsch , Null , 0 , leere Zeichenfolgen usw.
Beispiel:
$arr = ['name' => 'Tom', 'age' => 0, 'email' => ''];
print_r(array_filter($arr));
// Ausgabe:Array ( [name] => Tom )
Ja, die Bestellung kann die Ergebnisse beeinflussen , abhängig von der spezifischen Array -Struktur und dem Zweck, mit dem Sie sich befassen.
In diesem Fall wird der Schlüsselfall zuerst konvertiert und dann wird der Wert gefiltert.
$data = ['Name' => 'Tom', 'Age' => null, 'EMAIL' => ''];
$result = array_filter(array_change_key_case($data));
print_r($result);
Ausgabe:
Array ( [name] => Tom )
veranschaulichen:
Schlüssel sind alle Kleinbuchstaben: Name , Alter , E -Mail
Null und leere Saiten werden entfernt
$data = ['Name' => 'Tom', 'Age' => null, 'EMAIL' => ''];
$result = array_change_key_case(array_filter($data));
print_r($result);
Ausgabe:
Array ( [name] => Tom )
Es sieht so aus, als ob die Ausgabe gleich ist, aber wenn Sie Array_filter () mit der Rückruffunktion verwenden, kann der Unterschied herauskommen.
$data = ['Name' => 'Tom', 'Age' => 0, 'EMAIL' => 'tom@m66.net'];
$result1 = array_filter(array_change_key_case($data), function($val) {
return !empty($val);
});
$result2 = array_change_key_case(array_filter($data, function($val) {
return !empty($val);
}));
print_r($result1);
print_r($result2);
Ausgabe:
$result1:
Array ( [name] => Tom [email] => tom@m66.net )
$result2:
Array ( [name] => Tom [email] => tom@m66.net )
Die Ergebnisse sind zu diesem Zeitpunkt nach wie vor gleich, aber wenn Sie aufgrund des oberen und unteren Falles des Schlüsseldamens eine weitere logische Verarbeitung durchführen müssen, kann sich die Reihenfolge auf Ihre Beurteilungslogik auswirken.
Es wird empfohlen, auf der Grundlage der Bedürfnisse zu urteilen:
Wenn Sie das Format des Schlüssels einheitlich verarbeiten möchten (z. B. alle Kleinbuchstaben, um die Verwirrung von Fall zu vermeiden), können Sie zuerst Array_Change_key_case () verwenden.
Wenn Sie der Filterlogik der Array -Werte mehr Aufmerksamkeit schenken und sich nicht um das Format der Schlüsselnamen kümmern, spielt es keine Rolle, ob Sie zuerst Array_Filter () verwenden.
Wenn beide verwendet werden müssen, ist es am besten, die Reihenfolge der Sequenz klar zu definieren, um unsichere logische Fehler zu vermeiden.