$paths = array('a.htm', 'b.htm', 'c.htm', 'd.htm', 'e.thm'); $dir = 'base'; // Path`ları standarlaştırırsan foreach($paths as &$path) $path = $dir.'/'.$path; // unset($path); <- Çözüm budur. Problem ise aşağıda. // Sonra da $path`a değer atamaya kalkarsan foreach($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