如何循环遍历php数组的内容?

时间:2013-11-02 03:18:39

标签: php arrays

我有一个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 个答案:

答案 0 :(得分:2)

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

$ array似乎是两个键的响应,即responseHeader和response。响应键包含docs键,它是一个数组数组。这些数组中的每一个似乎都有一个标题。

答案 1 :(得分: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”和“docs”下找到的值都是 关联数组。因此,您可以随意在第一个循环中嵌套循环。

通常,您事先会知道关联数组中的键,因此您可以使用$array['some_key']访问它。如果不这样做,那么PHP的内置数组函数之一可能会派上用场(array_key_exists()等)。