Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: MárkaLánc
- urandom0: Száműztem az AI-t az életemből
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gban: Ingyen kellene, de tegnapra
- eBay-es kütyük kis pénzért
- GoodSpeed: Munkaügyi helyzet Hajdú-Biharban: észak és dél!
Új hozzászólás Aktív témák
-
válasz
Sk8erPeter
#12214
üzenetére
$a = array(1, 2, 3, 4);
foreach($a as &$i) echo $i *= 2;
foreach($a as $i) echo $i;A két ciklus "kibontva" valahogy így nézne ki:
/*
* Első foreach
* Itt az 1, 2, 3, 4 tömbből a ref. foreach miatt 2, 4, 6, 8 lesz
*/
&$i = $a[0]; echo $i *= 2;
&$i = $a[1]; echo $i *= 2;
&$i = $a[2]; echo $i *= 2;
&$i = $a[3]; echo $i *= 2;
/*
* Itt $i változó a tömbünk utolsó eleme a referencia miatt
* Tehát ha $i értéke módosul, módosul a tömb utolsó eleme is
* A második foreach kavarodást okoz, mert megint $i-t használjuk:
*/
// A tömb utolsó eleme az első elem is lett egyben (!)
// Azaz a tömb értékei: 2, 4, 6, 2
$i = $a[0]; echo $i;
// Itt az utolsó elem a másodikkal osztozik: 2, 4, 6, 4
$i = $a[1]; echo $i;
// Harmadikkal: 2, 4, 6, 6
$i = $a[2]; echo $i;
// Végül saját magával, de ő a harmadikra mutat, így...
// ...marad ahogy volt: 2, 4, 6, 6
$i = $a[3]; echo $i;Tanulság:
Ha referenciás foreach-et használsz, a fura meglepetések és az akár több órás debuggolás elkerülése érdekében MINDEN ESETBEN töröld a referenciát az utolsó elemre a foreach után az unset() függvénnyel, ami az esetünkben $i, tehát:
// Így már jó lesz
$a = array(1, 2, 3, 4);
foreach($a as &$i) echo $i *= 2;
unset($i);
foreach($a as $i) echo $i;
Új hozzászólás Aktív témák
- Milyen autót vegyek?
- exHWSW - Értünk mindenhez IS
- Autós topik látogatók beszélgetős, offolós topikja
- Xiaomi 14T Pro - teljes a család?
- MIUI / HyperOS topik
- Energiaital topic
- Kormányok / autós szimulátorok topikja
- Revolut
- Rezsicsökkentés, spórolás (fűtés, szigetelés, stb.)
- PlayStation 5
- További aktív témák...
- Surface GO 1, 2, 3 - PRO 8, 9,10, 11, X Magyar Világító Billentyűzet
- Eladó, párom iPhone 14 Plus - 128 GB / kártyafüggetlen / telefonja!
- Gamer PC - B450 WiFi -Ryzen 7 3700X, RX 6700 XT, 32 GB DDR4, 512 GB NVME
- Dell latitude 5420 i5-1145G7/ 16gb ddr4/ 250gb m.2 SSD
- Dell XPS 9350 13.4 /16:10/FHD+1920x1200/Intel Core Ultra 5 GEN2 226V/16GB/512GB SSD/ÚJ
- Samsung Galaxy S22 Ultra 256GB, Kártyafüggetlen , 1 Év Garanciával
- Xiaomi 14T Pro / 12/256GB / Kártyafüggetlen / 12Hó Garancia
- Jawbone Up okoskarkötő, aktivitásmérő
- HIBÁTLAN APPLE WATCH ULTRA 2 NATURAL TITANIUM 49MM -1 ÉV GARANCIA - MS3713, 100% AKKUMULÁTOR
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: ATW Internet Kft.
Város: Budapest

