Ist es immer nötig "is_array()" bevor ein foreach?
Ich Frage mich, ob es immer notwendig ist, etwas zu verwenden, wie is_array()
vor jeder foreach
ich tun.
Falls die variable kein array ist, es wirft einen Fehler.
Also ich benutze immer:
if(is_array($users)) {
foreach($users as $user){
}
}
Was würden Sie mir empfehlen?
Danke.
InformationsquelleAutor der Frage Alvaro | 2012-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, wenn Sie wissen dein code gut genug ist, sollte es keine Grund zu haben um zu prüfen ob es ein array ist.
Andernfalls, wenn die variable änderungen geben dass oft würde ich vorschlagen, optimieren Sie Ihren code ein wenig, so dass Sie es nicht tun.
Andere als die, mit, dass die if-Anweisung ist der Weg zu gehen.
InformationsquelleAutor der Antwort Neal
Wenn du sicher bist, dass etwas ist, ein array oder sonst implementiert Iterierbar, die Sie offensichtlich nicht brauchen, die extra
if
Zustand. Wenn du nicht sicher bist, dann natürlich die überprüfung der Typ wird Ihr code mehr zuverlässig.Einige hacks, die ich gesehen habe gehören die Umwandlung der variable in ein array: (array)$user. Dies wird jedoch nicht empfohlen, ist es besser, explizit den Typ überprüfen.
Auch, wenn dieser code innerhalb einer Funktion, die Sie verwenden können, argument eingeben:
Wenn die Funktion aufgerufen wird mit dem falschen Typ es einen Fehler auslöst.
InformationsquelleAutor der Antwort Ja͢ck
Vorausgesetzt, dies geschieht in einer Funktion:
Diese Weise werden Sie sofort sehen, wenn es heisst mit den falschen Parametern.
InformationsquelleAutor der Antwort CodeCaster
Im Allgemeinen, es ist besser nicht.
Einen guten Allgemeinen Grundsatz in der Programmierung ist nicht zu verbergen, oder den Fehler ignorieren.
Wenn eine variable sollte ein array, es tut Euch keinen service, um speziell ignorieren die situation, wenn es nicht ein array. Stattdessen ist es besser für Sie sein, um über das problem informiert Sie mit der integrierten Fehlerbehandlung. Ansonsten, du bist nicht das problem zu lösen, versteckte nur seine Auswirkungen. Dies kann das Debuggen nachfolgenden schwierig.
Es gibt jedoch eine Reihe von Annahmen hier:
Dies ist unter der Annahme, dass die variable soll ein array sein. Wenn Sie mit foreach () auf, ich nehme an, dass dies der Fall sein. Wenn Sie mit foreach () auf etwas, das könnte legitimerweise nicht ein array könnte es ein Indiz sein kann code wieder arbeiten.
Ihre Fehler-reporting und/oder Anmeldung (reporting auf einem Entwicklungs-server, Protokollierung auf die Produktion) muss richtig eingerichtet werden, um zu profitieren, was PHP-Fehler, sagen Sie. Speziell, es ist fast nie eine gute Idee, Sie zu ignorieren, PHP-Warnungen - trotz des namens "warnings", die Sie in der Regel deuten auf einen Fehler, die (meiner Meinung nach) sollten aufhören, die Ausführung.
Dass gesagt, ist es nicht unbedingt falsch Verwendung eines
is_array()
vor einer foreach ().InformationsquelleAutor der Antwort thomasrutter
Ja, es ist eine gute Idee und solche überlegungen machen Sie eine defensive Programmierer 🙂
InformationsquelleAutor der Antwort Blaster