2013-08-25 32 views
4

希望有人可以幫助我確定如何從此示例腳本初始化此變量($ value),我已從PHP複製Vikram Vaswani的初學者指南手冊。PHP(初學者指南)示例腳本中的未定義值錯誤

我已經打開了php.ini中的display_erors值,它在瀏覽器中返回這個錯誤。

說明:未定義變量:城市C:\ BitNami \ WordPress的-3.6-0 \的Apache2 \ htdocs中\上線締-array.php 23

警告:的foreach(c)中提供的參數無效: \ BitNami \ WordPress的-3.6-0 \ Apache2的\ htdocs中\上線聯想-array.php 23

這裏是我的代碼從本書

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

    } 

?> 

此外,在同一章本94頁複製其他示例複製,因爲「數組迭代器」只能無限期地掛在瀏覽器中。直到這本書中的所有例子看起來都很完美。

這是從本書中爲數組迭代器示例複製的代碼。任何人都知道這爲什麼會無限期地掛起,並且不會向瀏覽器顯示輸出。非常感謝您的幫助。

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

} 

?> 

回答

2

$iterator->next更改爲$iterator->next()接近最後一行。

$iterator->next不起作用,因爲PHP假定您正在訪問字段而不是調用方法。調用方法需要括號()

+0

SHiNKiROU!感謝您對第二個代碼塊數組迭代器示例的幫助,我嘗試了您的建議,現在它可以工作:)現在,我只是在尋找第一個代碼塊問題? –

+0

您拼寫錯誤的第一個變量名稱:它應該'$ cities'而不是'$ citites' –

1

我想象的$iterator->next,你的意思是要調用一個函數,而不是試圖訪問類ArrayIterator$iterator),命名next的變量。

爲了調用一個函數,需要在函數名稱後附加一組括號,例如function_name(),如果需要,可以帶或不帶一系列參數。

因此,而不是$iterator->next,你應該使用$iterator->next()

0

您正試圖訪問一個方法,因此您應該使用第一個括號關閉它。您應該使用$ iterator-> next()而不是$ iterator-> next。

1

在第一個例子中,錯誤的是在這一行:

$citites = array(

你拼錯的「城市」在這裏,而這打破了foreach循環。

在第二個示例中,將$iterator->next更改爲$iterator->next()。這將告訴PHP它是一種方法而不是一個字段,允許它被正確調用。

+0

啊!謝謝Gabriel。還要感謝Max和Shinkiru,你們搖滾!我可以終於接下來的例子。 –