2011-08-20 118 views
2

曾幾何時,在遙遠的土地上,有一個叫「$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(),我不會得到相同的錯誤 - 事實上,這樣做會產生預期的輸出!

我非常困惑,爲什麼會發生這種情況(而且因爲它阻塞的工作而感到無聊,就像你可以看到故事一樣),所以我們將不勝感激。

謝謝!

+0

...現在我覺得很蠢。 ;)謝謝大家!它持續很有趣。編輯:一旦最短時間限制結束,將接受答案。 –

+1

嘿嘿,我還在笑:D一個體面的IDE會爲你發現,並且幫你避免創作一個短篇小說。 – karim79

+0

哎呀,我們在這裏需要更多的創造力。 –

回答

5

你拼寫錯language

if (!in_array($langauge, $accepted)) { 
     continue; 
} 

交換au$langauge :)

+0

有一個[清除堆棧溢出的活動](http://meta.stackexchange.com/q/167342),通過刪除這些錯字相關的問題,我們真的可以使用你的幫助!你可以通過在這個問題上進行近距離投票來介入一點嗎? –

1
Notice: Undefined variable: langauge in /var/www/nginx-default/path/to/lib/http/languages.php 

如果複製粘貼錯誤文本,所以你拼錯變量名。