0

我有一个 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] 但它错误地说没有设置偏移量。

4

2 回答 2

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

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

于 2013-11-02T03:22:57.020 回答
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()等)。

于 2013-11-02T03:23:09.370 回答