Kutya @ jel és elnyomása hibák php váratlan eredmény array_walk

Egyszer szembe egy furcsa probléma: amikor a feldolgozás tömbök okozó funkció array_walk csapat. ahelyett, hogy ellenőrizze a tömb, elhatároztam, hogy elnyomja a hibaüzenet, ha van egy tömb. Mint mondják, nincs ítélet. A tömb nem volt kötelező az adatok egy részét, akkor eredményeképpen létrejött az előző kódot, vagy nem lehet, attól függően, különböző körülmények között. Ha van, az array-feldolgozás, anélkül, hogy egy hibaüzenetet. Ezért úgy döntöttem, hogy nem ellenőrzi, hogy létezik egy tömb, és hozzon array_walk kutya, hogy egyszerűsítse a kódot.

Nagyon meglepődtem, amikor rájöttem, hogy a tömb már nem kell feldolgozni.

Azt nézd meg, ez a teszt kód:

Eleinte írok error_reporting (E_ALL). , hogy függetlenül kiszolgáló beállításait lásd PHP hibákat. Ezután létrehoztam egy funkciót, hogy csatlakozzon a szóelem a tömbben. Azzal, hogy mivel a tömb átadása hivatkozás, a függvény módosítani kell a tömb, és nem továbbít egy példányt belőle. De csak abban az esetben (jobb félni, mint nedobdet), ellenőrzik a funkció kijelzőn.

Következő lépésként létre 3 vizsgálati tömböt egy sor szó és minden egyes hívás feldolgozása funkció array_walk csapat. De az első esetben azt használja array_walk tiszta formában, de a következő két esetben elnyomása hibaüzenetet küld, ha a megadott tömb nincs ott. Ebben az esetben, az egyik megoldás, tettem a kutya előtt egy függvényhívás, és a többi előtt a tömb nevét. Eleinte úgy tűnt, hogy ugyanezt az eredményt adja. Annak tesztelésére, hoztam a tömb feldolgozás után a blokkon belül

.

És akkor, ugyanúgy, ami miatt a feldolgozás a meglévő tömb, az úgynevezett a kezelés nem létezik, hogy ha egy hibaüzenet valóban elnyomott.

És kaptam ezt az eredményt:

Belül az ital jellegét ment minden a terv szerint. PHP kész volt inni, teát és tejet, és még sört. Legalább a kijelző funkció megfelelt az elvártnak. De valójában kiderült, hogy ő és Philo titokban önti whisky az asztal alatt, mert amikor ellenőrzi a tömb keresztül print_r. a „ital” nem egy párt, sem sör vagy whisky.

Miért történik ez, teljesen megértem. Valóban, a függvény belsejében mindent nézett nagy, függetlenül attól, hogy a kutya pozícióját a hívást.

Ezt követte ellenőrzi a hiba elnyomás. Calling egy nem létező array kutya nélkül elég várhatóan adta hibaüzenet „érv legyen egy tömbben.” Hívásfeldolgozással előtaggal kutya várhatóan hallgatott a hibát. De mi történik, ha hívja a kutya előtt egy sor előre nem volt ismert. Akár PHP lesz ez, mint egy hal, mert nem szabad, hogy beszéljen vele tömb, vagy kezdenek panaszkodni, hogy az argumentum legyen egy tömbben. Kiderült, hogy panaszt. Panaszkodik, ha a tömb nem. Ez szimulálja a feldolgozás, ha a tömb. Azaz, a kutya szoba a tömb nem csak letiltja a hibaüzenetet, hanem a nagyon hibát okoz adatfeldolgozás.

Kutyák csak szobában, mielőtt a funkció meghívása után a kívánt eredményt, ha van egy sor, úgy kell tekinteni, ha nem, a PHP csendben elhalad.

Végül azt kívánom megjegyezni, hogy ahelyett, hogy array_walk a legtöbb esetben jobb, ha array_walk_recursive. amely kezelni nem csupán a hagyományos tömbök, hanem többdimenziós, azoknak minden szintjén fészkel. Jobb használni array_walk_recursive hamarosan, mint később, abban az esetben egy sor változás, ellenőrizze, hogy feldolgozzák rekurzív.