作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有两个数组,我可以使用 $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
)
)
)
最佳答案
在您的示例中,$result['data']['id']
不存在。 id
位于另一个 数组中。
foreach
在这种情况下没有用,因为数据不统一。当您遍历 $results[0]
时,您会在第一次迭代中获得 nonsense
键,在第二次迭代中获得 data
键。此外,nonsense
键是一个键/值对数组,而 data
键是一个键/值对数组数组。
$results[0]
和 $results[1]
看起来 一致,但它们包含不同的 key 。
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有用。
关于php - 我在这个数组和 foreach 上做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516559/
我是一名优秀的程序员,十分优秀!