PHP和消失变量的故事

Jon*_*han 2 php

曾几何时,在遥远的一片土地上,有一个叫做" $languages." 的小镇.在这个小镇上生活着许多小小的东西$language- 有些大,有些小,有些吃饱了,有些瘦...这就是$language使小镇变得如此美好的各种各样的东西.

每年一次,小小的" $languages"将一个接一个地寄往一个奇怪而奇妙的地方.在这个陌生的地方,每种语言都变得同样微不足道,而且有些奇怪的东西 - 有些人称它为" $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;
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,if (!in_array($language, $accepted)我得到一个错误说明:`Notice: Undefined variable: langauge in /var/www/nginx-default/path/to/lib/http/languages.php.奇怪的是,我甚至可以潜入print()同一行的调用(通过将其放在if语句中)并且我不会得到相同的错误 - 事实上,这样做会给出预期的输出!

我很困惑为什么会发生这种情况(而且由于它阻挡的工作而感到无聊,正如你可以从故事中看到的那样),所以任何帮助都会受到赞赏.

谢谢!

Pau*_*aul 5

你拼错language了:

if (!in_array($langauge, $accepted)) {
        continue;
}
Run Code Online (Sandbox Code Playgroud)

交换au$langauge:)