曾幾何時,在遙遠的土地上,有一個叫「$languages
」的小鎮。在這個小鎮住着許多小小的「$language
」 - 一些大的,一些小的,一些吃得飽的,有些瘦的......這是使這個城鎮如此偉大的「$language
」的種類。PHP和消失變量的故事
每年一次,小小的「$language
」就會一個接一個地坐在一個奇怪而奇妙的地方。在這個陌生的地方,每種語言變得同樣微乎其微,而一種奇怪的東西 - 有些人稱它爲「$qfactor
」(但沒人知道爲什麼)從他們身上走出來。對於一些人來說,它完全缺失了,他們成了一個。有時候,它是畸形的 - 在這種情況下,「$language
」將被立即送回家。
然後,每一個最後的小「$language
」將穿過一個神奇的網關(稱爲偉大if
)。這個網關導致那些通過它的「$language
」的巨大驚愕,因爲它將決定它們是否是「$accepted
」之一。奇怪的是,這些「$accepted
」將被神奇地轟走,到一個沒有人知道的地方,也沒有人敢於(或可能)說出 - 因爲,奇怪的是,第二天,每個「$language
」都會被發現歸還給他家。
然後,有一天,if
被破壞,並且每一個「$language
」都會被粗魯地吐出來,因爲外部聲音宣稱:Notice: Undefined variable: langauge in /var/www/nginx-default/path/to/lib/http/languages.php
。
TL:DR;
foreach ($raw_languages as $language_value) {
$language = '';
$language_values = explode(';', $language_value);
// If the qfactor was not supplied
if (count($language_values) == 1) {
// Lower-case the language
$language = strtolower($language_values[0]);
// Default to a q-factor of one
$qfactor = 1;
// If the qfactor was supplied
} else {
$language = strtolower($language_values[0]);
$qfactor = $language_values[1];
// Validate the q-factor
if (!is_numeric($qfactor)) {
// If it's not numeric (invalid) skip it
continue;
}
}
// If this isn't one of the accepted languages, skip it.
if (!in_array($langauge, $accepted)) {
continue;
}
// Add it to the languages array
$languages[$language] = $qfactor;
}
出於某種原因,在if (!in_array($language, $accepted)
,我得到一個錯誤,指出:`Notice: Undefined variable: langauge in /var/www/nginx-default/path/to/lib/http/languages.php
。奇怪的是,我甚至可以在同一行(通過將它放在if
聲明中)潛入print()
,我不會得到相同的錯誤 - 事實上,這樣做會產生預期的輸出!
我非常困惑,爲什麼會發生這種情況(而且因爲它阻塞的工作而感到無聊,就像你可以看到故事一樣),所以我們將不勝感激。
謝謝!
...現在我覺得很蠢。 ;)謝謝大家!它持續很有趣。編輯:一旦最短時間限制結束,將接受答案。 –
嘿嘿,我還在笑:D一個體面的IDE會爲你發現,並且幫你避免創作一個短篇小說。 – karim79
哎呀,我們在這裏需要更多的創造力。 –