Hirdetés
- Stratégiai biztonsággal védekeznek a dráguló memóriák ellen a gyártók
- Milyen notebookot vegyek?
- Egérpad topik
- Ilyen blokkot sem láttunk még készre szerelt vízhűtésnél
- Vezetékes FEJhallgatók
- 3D nyomtatás
- Az AI-piac kivégezte a Micronhoz tartozó Crucialt
- Melyik tápegységet vegyem?
- SSD kibeszélő
- VR topik
Ú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
- Kèszletről,azonnal vihető 9060XT! Már kamatmentes rèszletre is! Èrdeklődj!
- LG 27UP850K-W - 27" IPS LED - 3840x2160 4K - DisplayHDR 400 - USB Type-C - AMD FreeSync
- Motorola Edge 40 / 8/256 GB / Kártyafüggetlen / 12Hó Garancia
- Bomba ár! Lenovo 14W Gen2 - AMD 3015e I 4GB I 128SSD I 14" FHD I HDMI I Cam I W11 I Garancia!
- AKCIÓ! LG UltraGear 27GR93U-B 27 4K 144Hz IPS monitor garanciával hibátlan működéssel
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: ATW Internet Kft.
Város: Budapest


