$paths = array('a.htm', 'b.htm', 'c.htm', 'd.htm', 'e.thm'); $dir = 'base';// Path`ları standarlaştırırsanforeach($paths as &$path) $path = $dir.'/'.$path;// unset($path); <- Çözüm budur. Problem ise aşağıda.// Sonra da $path`a değer atamaya kalkarsanforeach($paths as $path) // mesela, yine foreach echo $path.', '; // Kederli sonuçlar ortaya çıkar.// base/a.htm, base/b.htm, base/c.htm, base/d.htm, base/d.htm,// iki kez d.htm çıkmış olur. : ( |
& |
Sorun orda ki, PHP`de foreach`de tanımlanan iterasyon değişkeni ($path) değerini foreach`in dışında da saklıyor.
Dolayısıyla, yukarıdakı foreach son döngüsünde $path`a $paths`ın sonuncusuna referans atadığından, aşağıdakı foreach $path`a her değer atadığında $paths`ın sonuncusunu değiştirmiş oluyor.
Hiç yorum yok:
Yorum Gönder