2012-07-13 132 views
0

我有一個Array,當我打印它時,我得到以下輸出;獲取數組的值

Array[{"city":"London","school":"st patrick"}] 

現在我想讀取保存在變量city的項目,並檢查其LondonIF條件;

if ($cityArray['city'] == 'London') { 

    echo 'City present'; 
} 

我如果條件之上,是不正確的,我沒有得到預期的輸出。我想我訪問city項目的方式不正確。

+0

這會導致錯誤 – PeeHaa 2012-07-13 09:04:42

+0

使用正確的語法,還是說這個問題?你在'$ cityArray'上缺少'$' – Dan 2012-07-13 09:06:26

+0

這是一個錯誤,我會糾正它 – Illep 2012-07-13 09:08:27

回答

0

幾件事情。你的數組看起來是JSON格式。你會想用json_decode解碼(後固定陣列格式):

$jsonArray = Array('{"city":"London","school":"st patrick"}'); // User the correct PHP array format: Array() while the inside elements should be quoted if they're strings. 
$cityArray = json_decode($jsonArray[0]); 

使用正確的變量引用格式:

if ($cityArray->city == 'London') { // $cityArray is an object, so you'll need to use the -> operator to get its "city" property. 
    echo 'City present'; 
} 

你要訪問的值的方法關聯數組(通過輸入名稱來返回值)是正確的,但只需要修復幾個格式問題即可。

編輯:添加獲取JSON的數組的索引號。

+0

它說,json_decode()期望參數1是字符串,在 – Illep 2012-07-13 09:16:58

+0

中給出的數組@Illep對不起,我的錯。我已經爲JSON數組添加了索引號0,以便它獲得JSON字符串(我知道PHP 5.4支持新的數組格式,但至今我還不是很熟悉它)。 – Stegrex 2012-07-13 09:23:15

0

這是一個JSON字符串,你需要首先解碼:

$data = json_decode($json); 

然後,您可以訪問的元素,像這樣:

for ($i = 0; $i < count($data); $i++) { 
    $element = $data[$i]; 
    echo $element->city; 
}