曾几何时,在遥远的一片土地上,有一个叫做“$languages
”的小镇。在这个小镇生活着许多小小的“$language
” - 一些大的,一些小的,一些吃饱的,一些瘦的......正是这种“$language
”的多样性让这个小镇变得如此大。
每年一次,小“$language
”将一个接一个地寄往一个奇怪而奇妙的地方。在这个陌生的地方,每种语言都变得同样微不足道,一种奇怪的东西 - 有些人称它为“$qfactor
”(但没有人知道为什么)从它们中出来。对于一些人来说,它完全没有了,他们就变成了一个。有时候,它的格式不正确 - 在这种情况下,“$language
”会立即送回家。
然后,每一个最后的小“$language
”都将穿过一个神奇的门户(称为The Great 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
。奇怪的是,我甚至可以在同一行上调用print()
(通过将其置于if
语句中)并且我不会得到相同的错误 - 事实上,这样做会给出预期的产出!
我非常困惑为什么会发生这种情况(而且因为它的阻碍工作而感到无聊,正如你可以从故事中看到的那样),所以任何帮助都会受到赞赏。
谢谢!
答案 0 :(得分:5)
你拼写错误language
:
if (!in_array($langauge, $accepted)) {
continue;
}
交换a
中的u
和$langauge
:)
答案 1 :(得分:1)
Notice: Undefined variable: langauge in /var/www/nginx-default/path/to/lib/http/languages.php
如果您复制粘贴的错误文本,那么拼写错误的变量名称。