PHP(初学者指南)示例脚本中的未定义值错误

时间:2013-08-25 18:43:16

标签: php

希望有人可以帮助我确定如何从我从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;

 }

?> 

4 个答案:

答案 0 :(得分:2)

$iterator->next更改为最后一行附近的$iterator->next()

$iterator->next不起作用,因为PHP假定您正在访问字段而不是调用方法。调用方法需要括号()

答案 1 :(得分:1)

我想通过$iterator->next,你的意思是调用函数而不是试图访问名为ArrayIterator的类$iteratornext)的变量。

为了调用一个函数,你需要在函数名之后添加一组括号,即function_name(),如果需要,可以带或不带一系列参数。

因此,您应该使用$iterator->next而不是$iterator->next()

答案 2 :(得分:1)

在第一个例子中,错误在这一行:

$citites = array(

你在这里拼错了“城市”,这打破了foreach循环。

在第二个示例中,只需将$iterator->next更改为$iterator->next()即可。这将告诉PHP它是一个方法而不是一个字段,允许它被正确调用。

答案 3 :(得分:0)

您正在尝试访问某个方法,因此您应该使用第一个括号关闭它。您应该使用$ iterator-&gt; next()而不是$ iterator-&gt; next。