Bei der Verwendung von PHP für die Array -Verarbeitung ist Array_map () eine häufig verwendete und leistungsstarke Funktion. Es ermöglicht uns, eine Rückruffunktion auf jedes Element im Array anzuwenden, das einfach und elegant ist. Wenn Sie jedoch in der täglichen Entwicklung mit nicht-Scalar-Werten wie Arrays oder Objekten in einem Rückruf zu tun haben, können Sie möglicherweise auf einige "nicht wie ein Fehler aussehen, sondern verwirrend" begegnen und sogar einen Fehler auslösen. In diesem Artikel werden Sie dieses versteckte Risiko ausführlich verstehen und wie Sie sicher damit umgehen.
In PHP gehören die Skalarwerte::
int
schweben
Saite
bool
Anstelle von skalaren Werten enthalten sie:
Objekt
Ressource
NULL (manchmal zählen)
Wenn Sie nicht-Scalar-Werte in die Rückruffunktion von array_map () übergeben und in der Funktion inkompatible Operationen verwenden, z.
Schauen wir uns das folgende Beispiel an:
<code> $ data = [['name' => 'tom'], ['name' => 'Jerry'], ['name' => 'spike'],]; $ result = array_map (Funktion ($ item) {
kehre 'Hallo,' zurück. $ item;
}, $ data);
</code>
Sie können die Ausgabe erwarten:
[
"Hello, Tom",
"Hello, Jerry",
"Hello, Spike"
]
Tatsächlich löst dieser Code jedoch einen Fehler aus:
Warning: Array to string conversion
Dies liegt daran, dass $ Item ein Array ist und Sie Arrays nicht direkt mit Saiten spleißen. PHP erlaubt keine implizite Umwandlung von Arrays in Zeichenfolgen, es sei denn, Sie verarbeiten sie manuell.
Um dies zu vermeiden, stellen Sie einfach sicher, dass Sie mit skalaren Werten oder mit nicht-Scalar-Werten im Rückruf zu tun haben:
Ausgabe:
[
"Hello, Tom",
"Hello, Jerry",
"Hello, Spike"
]
Ausgabe:
[
"Data: {\"name\":\"Tom\"}",
"Data: {\"name\":\"Jerry\"}",
"Data: {\"name\":\"Spike\"}"
]
Diese Methode eignet sich zum schnellen Betrachten der Struktur während des Debuggens. Es wird jedoch empfohlen, sie mit Vorsicht in der Geschäftslogik zu verwenden.
Nicht-Scalar-Werte sind häufiger bei der Verarbeitung von Dateneingaben durch Benutzer oder von externen APIs zurückgegeben. Beispielsweise ziehen Sie Daten über die folgende Schnittstelle:
<code> $ data = json_decode (Datei_get_Contents ('https://m66.net/api/users'), true); </code>Die Rückkehrstruktur kann ein Array -verschachteltes Array sein. Wenn Sie zu diesem Zeitpunkt Array_Map () direkt für $ Data verwenden, ohne die Struktur zu bestätigen, treten Sie sehr wahrscheinlich auf den Punkt.
array_map () ist ein effizientes und elegantes Werkzeug, wird jedoch vorausgesetzt, dass Ihre Rückruffunktion eingehende Werte korrekt verarbeiten kann. Wenn Sie einen nicht-scalaren Wert übergeben, ihn jedoch als Skalar verarbeiten, haben Sie möglicherweise Laufzeitfehler oder sogar logische Fehler. Denken Sie an die folgenden Punkte:
Stellen Sie sicher, dass die Rückruffunktion Vorhersagen zum Datentyp des eingehenden Werts hat;
Vermeiden Sie implizite String -Verarbeitung bei Arrays oder Objekten.
Die externen Daten werden zuerst strukturiert und dann verarbeitet.
Je weniger Sie schreiben, desto weniger machen Sie Fehler; Je tiefer Sie verstehen, desto stabiler benutzt du es. Ich hoffe, dieser Artikel hilft Ihnen dabei, diese "kleine Grube" klar zu sehen und Ihren PHP -Code robuster zu machen.