В вашем примере $result['data']['id']
не существует. id
еще внутри другой массив.
foreach
бесполезен в этой ситуации, потому что данные не единообразны. Когда вы перебираете $results[0]
, вы получаете ключ nonsense
на первой итерации и ключ data
на второй итерации. Кроме того, ключ nonsense
- это массив пар ключ / значение, а ключ data
- это массив массивов пар ключ / значение.
$results[0]
и $results[1]
кажутся одинаковыми, но содержат разные ключи.
echo $results[0]['data'][0]['id'], "<br>\n";
echo $results[0]['data'][1]['eh'], "<br>\n";
echo $results[1]['more data'][0]['freshstuff'], "<br>\n";
Обновление
foreach () не работает с такими массивами. array_walk_recurisive () обычно является хорошим выбором в этой ситуации.
<code><pre>
<?php
$results = array(
array(
'nonsense' => array(
'more' => 'information',
'less' => 'less stuff'
),
'data' => array(
array('id' => 'some id'),
array('eh' => 'some eh')
)
),
array(
'more stuff' => array(
'more' => 'information',
'less' => 'less stuff'
),
'more data' => array(
array('freshstuff' => 'some id'))
)
);
function test_print($item, $key)
{
echo "$key: $item\n";
}
array_walk_recursive($results, 'test_print');
?>
показывает
more: information
less: less stuff
id: some id
eh: some eh
more: information
less: less stuff
freshstuff: some id
В зависимости от ваших потребностей, вы также можете найти некоторые другие функции массива полезными.