Ссылаться на подмассивы PHP по ключу

#php #arrays #xml #json

#php #массивы #xml #json

Вопрос:

Я играю с PHP 5.4 для обработки некоторых данных, возвращаемых из HTTP API. Данные возвращаются в формате XML, который я затем преобразую в массив, используя следующее:

 $xml = simplexml_load_string($resp);
$json = json_encode($xml);
$arr = json_decode($json, true);
  

Это дает мне данные в виде массива (если есть лучший способ сделать это, пожалуйста, скажите мне!). Результатом является следующий образец массива:

 array (
  '@attributes' =>
  array (
    'status' => 'success',
    'code' => '19',
  ),
  'result' =>
  array (
    '@attributes' =>
    array (
      'total-count' => '1',
      'count' => '1',
    ),
    'user' =>
    array (
      'entry' =>
      array (
        0 =>
        array (
          '@attributes' =>
          array (
            'name' => 'chris',
          ),
          'phash' => 's98djf384jr0oq8jf8j3948jfw',
        ),
        1 =>
        array (
          '@attributes' =>
          array (
            'name' => 'test',
          ),
          'phash' => '9a8sdfu9n2308ja8fj34ojr9a0',
        ),
      ),
    ),
  ),
)
  

Я пытаюсь выяснить, как правильно ссылаться на различные элементы массива. Я пытался ссылаться по индексу, например echo $arr[0][0], но это ничего не возвращает, и я не могу узнать, как ссылаться на подмассивы по ключу.

Комментарии:

1. Вы пробовали: $arr['@attributes']['status'] ?

2. как вы можете ссылаться на него, если у $arr[0][0] него нет правильного ключа 0 / поэтому ссылайтесь на существующие ключи, такие как $arr['@attributes']['code']

3. В вашем массиве нет ключа 0. Us результат и пользовательские keu. Затем вызывайте ключ 0.

4. Я только сейчас изучаю PHP, и я знал, что это должно быть что-то такое простое! Спасибо!

5. foreach($array как $key => $value){}

Ответ №1:

Это четко задокументировано в руководстве по PHP.

http://www.php.net/manual/en/language.types.array.php

Массивы в PHP — это пары ключ / значение. Когда ключ не указан, PHP будет использовать числовые индексы.

Вы можете получить доступ к значениям как $arr['@attributes']['status']

Чтобы проверить, существует ли ключ, вы можете использовать isset($arr['@attributes']) или array_key_exists('@attributes',$arr) .

Для перечисления

 foreach($arr as $key=>$value) { .... }
  

http://ca1.php.net/manual/en/control-structures.foreach.php

Комментарии:

1. Спасибо. Я просмотрел эту страницу, но пропустил этот раздел. Требуется больше кофе!