Hirdetés
- Poco F7 – bajnokesélyes
- Samsung Galaxy Watch6 Classic - tekerd!
- Ford SYNC 3 infotainment rendszer teszt
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen okostelefont vegyek?
- Örömhír: nem spórol Európán a OnePlus
- Megtartotta Európában a 7500 mAh-t az Oppo
- Drága bluetooth tagek olcsóbb alternatívái (MiLi MiTag, LiTag, OTAG, stb.)
- Apple Watch
Ú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
- Dell Precision 7550 i7-10850H 32GB 512GB Nvidia RTX5000 1 év garancia
- ÚJ, SZÁMLÁS, GARANCIÁS GAMER PC Ryzen 5 9600X RTX 5060 Ti 32GB RAM 1TB NVMe AIO vízhűtés
- Dell Latitude 7320 i5-1145G7 16GB 512GB 1 év garancia
- Dell Latitude 7320 i5-1145G7 16GB 256GB 1 év garancia
- MSI GS65 Stealth Thin 8RE I7 8750H, 32GB, GTX1060, 144Hz, 2.5TB SSD
- BESZÁMÍTÁS! MSI H310M i5 9500 16GB DDR4 120GB SSD 2TB HDD RTX 2060 Super 8GB ÚJ Zalman T4 Plus 600W
- Azonnali kézbesítés az év bármely pillanatában
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB DDR5 RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- iPhone 12 emelt kapacitású 3250mAh diagnosztizálható akkumulátor, +ajándék ragasztó
- Honor Pad X8 / 4/64GB / Wi-Fi / 12 Hó Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


