我有两个数组,我可以使用$ result [0]或$ result [1]。
我做了print_r($results[0])
和print_r($result[1])
。他们都给了我想要的两个不同的阵列。
但是,如果我这样做,我将无法获得任何信息
foreach($results[0] as $result){
echo $result['data']['id'];
}
我希望能够区分这两个数组,所以我希望能够从这两个数组中获取信息。
我也在$ results上做了一个json_decode。
如果有人可以帮助我,那就太好了!感谢
编辑:
Array
(
[nonsense] => Array
(
[more] => information
[less] => less stuff
)
[data] => Array
(
[0] => Array
(
[id] => some id
)
[1] => Array
(
[eh] => some eh
)
)
)
Array
(
[more stuff] => Array
(
[more] => information
[less] => less stuff
)
[more data] => Array
(
[0] => Array
(
[freshstuff] => some id
)
)
)
答案 0 :(得分:4)
在您的示例中,$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()通常是一个不错的选择。
<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');
?>
</pre>
显示器
more: information
less: less stuff
id: some id
eh: some eh
more: information
less: less stuff
freshstuff: some id
根据您的需要,您可能还会发现其他一些array functions有用。