2013-11-02 59 views
0

我有一個PHP陣列我得到作爲來自服務器,所以我不能改變它的響應,如何循環訪問php數組的內容?

print_r($array); //結果低於

array(
    'responseHeader'=>array(
    'status'=>0, 
    'QTime'=>0, 
    'params'=>array(
     'indent'=>'true', 
     'q'=>'rajnikanth', 
     '_'=>'1383362349068', 
     'wt'=>'php')), 
    'response'=>array('numFound'=>2,'start'=>0,'docs'=>array(
     array(
     'id'=>'31546690', 
     'title'=>'Jayan quotes', 
     '_version_'=>1450551735544184832), 
     array(
     'id'=>'597727', 
     'title'=>'List of Internet phenomena', 
     '_version_'=>1450551735290429440)) 
)) 

如何訪問每一個標題的值在這個數組?我試圖使用$ array [0],但它錯誤地說沒有偏移集。

回答

2
foreach ($array['response']['docs'] as $doc) { 
    echo $doc['title']; 
} 

$ array似乎是一個由兩個鍵組成的數組,responseHeader和response。響應鍵包含一個docs鍵,它是一個數組數組。這些陣列中的每一個看起來都有一個標題。

1

這是因爲這不是一個索引數組......這是一個關聯的數組。這意味着內容由字符串鍵而不是數字引用。

這樣做的PHP結構是:

foreach ($array as $key => $value) { 
} 

在你的情況,這種循環會重複兩次。

第一次迭代:

$key --> "responseHeader" 
$value --> an array containing the keys "status", "QTime", and "params" 

第二次迭代:

$key --> "response" 
$value --> an array containing the keys "numFound", "start", and "docs" 

注意,同時根據 「PARAMS」 和 「文檔」 中找到的值是關聯數組。所以,請隨意在第一個循環中嵌套循環。

通常情況下,您會事先知道關聯數組中的密鑰,因此您可以使用$array['some_key']來訪問它。如果你不這樣做,那麼PHP的內置數組函數可能會派上用場(array_key_exists()等)。