Právě jsem ztrávil téměř hodinu přemítáním nad tím, jestli je větší tupec PHP nebo já.
Měl jsem kód v tomto smyslu:
$a = array(
1 =>"one",
3 =>"two",
5 => "three"
);
foreach($a as $key=>&$val) {
if($key == 3) {
unset($a[$key]);
} else {
$val = 'changed';
}
unset($key, $val);
}
print_r($a);
Očekávaný výstup byl:
Array
(
[1] => changed
[5] => changed
)
ale já pořád dostával:
Array
(
[1] => changed
[5] => three
)
Když už jsem došel do stádia, kdy jsem byl přesvědčen, že větší blbec je PHP, otevřel jsem bugzillu PHP a po chvíli neuspěšného hledání stejné chyby jsem zakládal nový bug report.
Jeden z prvních údajů, které jsem ale musel vyplnit, bylo verze PHP. Používám 5.2.0, což je mimo jiné aktuálně i verze v Debian stable, což je náš hosting. Tato verze ale na výběr nebyla a byl jsem instruován upgradovat na 5.2.5. Pokorně jsem poslechl a stáhl 5.2.5. K mé zlosti se problém v této verzi už neobjevuje. Ani v changelogu jsem ale nenašel žádný záznam, který by se této chyby týkal.
Vzhledem k tomu, že Debian asi jen tak upgradovat nebude, budu muset najít nějaký způsob, jak to obejít.