4

Vikram Vaswani による PHP A 初心者向けガイドブックからコピーしたこのサンプル スクリプトから、この変数 ($value) を初期化する方法を誰かが特定するのを手伝ってくれることを願っています。

php.ini で display_erors 値を有効にしましたが、ブラウザーでこのエラーが返されます。

注意: 未定義の変数: C:\BitNami\wordpress-3.6-0\apache2\htdocs\associative-array.php の 23 行目の都市

警告: C:\BitNami\wordpress-3.6-0\apache2\htdocs\associative-array.php の 23 行目の 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";

  }

?> 

また、同じ章で、「配列イテレータ」がブラウザで無期限にハングアップするため、この他の例をコピーしました。これまで、本のすべての例は完全に機能しているように見えました。

これは、配列反復子の例の本からコピーしたコードです。これが無期限にハングアップし、ブラウザに出力が表示されない理由は誰でも知っています。助けてくれてどうもありがとう。

<?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

4 に答える 4

2

最後の行近くに変更$iterator->nextします。$iterator->next()

$iterator->nextPHP は、メソッドを呼び出すのではなく、フィールドにアクセスしていると想定しているため、機能しません。メソッドの呼び出しには括弧が必要()です。

于 2013-08-25T18:44:43.537 に答える
1

最初の例では、エラーは次の行にあります。

$citites = array(

ここで「都市」のつづりを間違えたので、foreach ループが壊れています。

2 番目の例では、 に変更$iterator->nextするだけ$iterator->next()です。これにより、フィールドではなくメソッドであることが PHP に通知され、正しく呼び出されるようになります。

于 2013-08-25T19:15:56.310 に答える