Php megfelelő rendezési tömbök

Elég gyakran, a szakirodalomban iterálására tömbök hez szerkezete a következő:

Első pillantásra, minden rendben van, de az ilyen kód nem kívánatos. A tény az, hogy mindegyik ismétlésnél a hurok, pontosabban, amikor ellenőrzi a feltételek, akkor az úgynevezett count () függvényt. Akkor természetesen módosítani a kódot sleduyushy módon:

A második lehetőség gyorsabban fog futni. Az én esetemben, a különbség 0,3 másodperc volt. De aztán megint kiderül valahogy csúnya, egy további változó, hogy nem jó. A kérdés az, hogy miért használja a hurok, ha van egy csodálatos ciklus php foreach? Ami, mellesleg, ez kifejezetten a végighaladni tömbök, objektumok.

Ezen túlmenően, az utóbbi lehetőség működik egy kicsit gyorsabb, mint az utolsó. Nem sok, de gyorsabb valahol 0,01 másodperc.

Tehát miért, néhány még továbbra is használhatja a ciklus? A legvalószínűbb dolog az, hogy tapasztalatlan programozók azonnal feltenni a kérdést: „Ez a fickó is szép, de az utóbbi esetben nem tudjuk megváltoztatni a tömb elemeit.” Továbbá, ez egy nagyon nagy hiba. Vegyünk egy egyszerű példát, nézzük meg az egész tömb elemeit egy és szorozzuk őket 2. Kérjük:

Itt, az egyetlen különbség az, hogy a változó $ e lesz egy hivatkozás értéke a tömb elem. És ne felejtsük el, hogy vegye el azt a ciklusban hatástalanított () függvényt. Ez legyen kötelező. Olvassa el itt.

És végül, egy másik példát, ahol valóban jól jöhet építési. Itt beszélünk, amikor meg kell végighaladni a tömb elemeit a vége. És megint sok források arra utalnak, hogy erre:

Bár akkor lehet, nincs sallang:

A program futása az első 0856 másodperc, a második - 0,157 másodperc (gyorsabb, mint 5-ször!). Melyik a jobb, ha úgy dönt.

muff
Az első alkalommal láttam, hogy lehet változtatni a tömb foreach'e: foreach ($ tömb $ E) $ E * = 2; Mindig azt megtette: foreach ($ tömb, mint $ k => $ e) $ array [$ k] * = 2; Ennek oka, hogy - élni és tanulni)
válasz

korolariya
Talán egy blogot Kedvencek
válasz

Anton
Hogyan működik a kétdimenziós és háromdimenziós tömb egy foreach ciklus?
válasz

Ivan
Nagyon egyszerű, valamint két-dimenziós, akkor ellenőrizze, hogy jön minden iteráció. Egy példa a rekurzív

Alex
Keresek valami használható. Ha az egydimenziós tömb, a második és a harmadik változat közel azonos sebességgel, majd iterálására amit néhány tárgyat, rögzíti adatbázis párhuzamos a tömb vezet észrevehető lag foreach.
válasz

Kapcsolódó cikkek