希望有人可以帮助我确定如何从我从Vikram Vaswani的PHP初学者指南中复制的示例脚本初始化此变量($ value)。
我在php.ini中打开了display_erors值,并在浏览器中返回此错误。
注意:未定义的变量:第23行的C:\ BitNami \ wordpress-3.6-0 \ apache2 \ htdocs \ associative-array.php中的城市
警告:在第23行的C:\ BitNami \ wordpress-3.6-0 \ apache2 \ htdocs \ associative-array.php中为foreach()提供的参数无效
这是我从本书第94页复制的代码
<?php
// define array
$citites = array(
"United Kingdom" => "London",
"United States" => "Washington DC",
"France" => "Paris",
"India" => "Delhi"
);
// Iterate over the associative array
// and print each value
// this example as supplied in the book
// returns uninitialized error for either $key or $value on line 20
foreach ($cities as $key => $value) {
echo "$value is in $key. \r\n";
}
?>
同样在同一章中这个复制的另一个例子,对于&#34;数组迭代器&#34;只是在浏览器中无限期挂起。直到这一点,书中的所有例子似乎都很完美。
这是从本书中为数组迭代器示例复制的代码。任何人都知道为什么这会无限期地挂起并且不会向浏览器显示输出。非常感谢你的帮助。
<?php
// define associative array (hash)
$cities = array(
"United States" => "Washington",
"United Kingdom" => "London",
"France" => "Paris",
"Spain" => "Madrid",
"Italy" => "Rome"
);
// Create an array itterator object
$iterator = new ArrayIterator($cities);
// rewind to beginning of array
$iterator->rewind();
// iterate over the array
// print each value
while ($iterator->valid()) {
print $iterator->current() . " is in " . $iterator->key() . ". \r\n";
$iterator->next;
}
?>
答案 0 :(得分:2)
将$iterator->next
更改为最后一行附近的$iterator->next()
。
$iterator->next
不起作用,因为PHP假定您正在访问字段而不是调用方法。调用方法需要括号()
。
答案 1 :(得分:1)
我想通过$iterator->next
,你的意思是调用函数而不是试图访问名为ArrayIterator
的类$iterator
(next
)的变量。
为了调用一个函数,你需要在函数名之后添加一组括号,即function_name()
,如果需要,可以带或不带一系列参数。
因此,您应该使用$iterator->next
而不是$iterator->next()
。
答案 2 :(得分:1)
在第一个例子中,错误在这一行:
$citites = array(
你在这里拼错了“城市”,这打破了foreach循环。
在第二个示例中,只需将$iterator->next
更改为$iterator->next()
即可。这将告诉PHP它是一个方法而不是一个字段,允许它被正确调用。
答案 3 :(得分:0)
您正在尝试访问某个方法,因此您应该使用第一个括号关闭它。您应该使用$ iterator-&gt; next()而不是$ iterator-&gt; next。