php中多维数组循环遍历问题。

奔波在生活路上 2015-08-10 04:54:32

Array
(
[head] => Array
(
[cmd] => 105
[appKey] => 53
[reqSerialNo] =>
[version] =>
[ctalkId] => 1
[seqNo] => 1
[seqCnt] => 1
[retCode] => 0
[retStr] => OK
)

[respInfo] => Array
(
[userInfos] => Array
(
[0] => Array
(
[userIdinfo] => Array
(
[uuid] => 100000124
[type] => 0
[id] => 100000124
)

[userKeyInfos] => Array
(
[1] => Array
(
[value] => 100000124
[valueName] => sdkUserPriId
[valueKeyType] => 1
[accessLvl] => 0
[reserveValue] => Array
(
)

[reserve] => Array
(
)

)

[2] => Array
(
[value] => 张尼玛
[valueName] => nickName
[valueKeyType] => 2
[accessLvl] => 0
[reserveValue] => Array
(
)

[reserve] => Array
(
)

)

[3] => Array
(
[value] => [
{
"bigKey" : "",
"bigUrl" : "group2/M00/00/05/wKgBC1TAV06BS21_AABoZKLBGRM281.png",
"smallKey" : "",
"smallUrl" : "group2/M00/00/05/wKgBC1TAV07RoHGEAAAXAgS_rVM330.png"
}
]

[valueName] => head
[valueKeyType] => 3
[accessLvl] => 0
[reserveValue] => Array
(
)

[reserve] => Array
(
)

)

[5] => Array
(
[value] => 1
[valueName] => gender
[valueKeyType] => 5
[accessLvl] => 0
[reserveValue] => Array
(
)

[reserve] => Array
(
)

)

[25] => Array
(
[value] => 0
[valueName] => lastUpdateTime
[valueKeyType] => 25
[accessLvl] => 0
[reserveValue] => Array
(
)

[reserve] => Array
(
)

)

[71] => Array
(
[value] => 2
[valueName] => servercode
[valueKeyType] => 71
[accessLvl] => 0
[reserveValue] => Array
(
)

[reserve] => Array
(
)

)

)

[userInfoReserve] => Array
(
)

)

)

)

)

这是数组打印出来的结果,在网上看到有把多维数组转化成一维数组的方法,但是这样循环遍历出来的结果只能通过下标来获取数据了

function arr_foreach ($arr) {
static $data;
if (!is_array ($arr)) {
return $data;
}
foreach ($arr as $key => $val ) {
if (is_array ($val)) {
arr_foreach ($val);
} else {
//$data[$key]=$val;
$data[] = $val;

}
}
return $data;
}
$res=arr_foreach($result );
print_r($res);

尝试过在 $data[] = $val;里面加上key但是获取的信息就不全了。$result返回来的可能是多条用户信息,打印只打印了单条出来,其他的结构都是一样的。求帮忙
...全文
235 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-08-11
  • 打赏
  • 举报
回复
你是要取 userKeyInfos 键下的内容吗? 如果要代码,请给出原始数组的 var_export 打印结果
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
你这是一个4维以上的数组,你打算做什么呢? 按你示例的代码,输出的是一维数组。需求是这样吗?
嗯,就是转化成一维之后发现如果用户数据有多条的话,他的下标就会一直增加,没办法去循环遍历了,我现在想做的就是查询出10个用户数据,然后获取到用户名字、区服、头像、性别列表显示出来。不知道怎么来写循环
xuzuning 2015-08-11
  • 打赏
  • 举报
回复
你这是一个4维以上的数组,你打算做什么呢? 按你示例的代码,输出的是一维数组。需求是这样吗?
  • 打赏
  • 举报
回复
没人嘛,技术大大呢。
  • 打赏
  • 举报
回复
已经解决了。
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
你是要取 userKeyInfos 键下的内容吗? 如果要代码,请给出原始数组的 var_export 打印结果

$new_arr = array();
    foreach ($result['respInfo']['userInfos'] as $k => $a) {
        foreach ($a['userKeyInfos'] as $v) {
            $new_arr[$k][$v['valueName']] = $v['value'];
        }
    }
    print_r($new_arr);
这个是捣腾出来遍历的结果

Array
(
    [0] => Array
        (
            [sdkUserPriId] => 100000124
            [nickName] => 张尼玛
            [head] => [
   {
      "bigKey" : "",
      "bigUrl" : "group2/M00/00/05/wKgBC1TAV06BS21_AABoZKLBGRM281.png",
      "smallKey" : "",
      "smallUrl" : "group2/M00/00/05/wKgBC1TAV07RoHGEAAAXAgS_rVM330.png"
   }
]

            [gender] => 1
            [lastUpdateTime] => 0
            [servercode] => 2
        )

    [1] => Array
        (
            [sdkUserPriId] => 100000125
            [nickName] => 100000125
            [head] => [
   {
      "bigKey" : "",
      "bigUrl" : "group1/M00/00/1D/wKgBeVUTdUCRpZD9AAF6ty8lLh4759.png",
      "smallKey" : "",
      "smallUrl" : "group1/M00/00/1D/wKgBeVUTdUDyBV08AAAKBhUiAA8391.png"
   }
]

            [gender] => 0
            [lastUpdateTime] => 0
            [servercode] => 
        )
现在的问题是head字段里面的头像图片怎么取呢在我的foreach遍历里面加还是取出$new_arr再去遍历呢,servercode这个是区服也是在遍历里面做循环吗?
  • 打赏
  • 举报
回复
求帮帮忙,发现一个问题,就是这个方法遍历的时候,如果返回的是多个用户的,它全都在一个array里面显示了,id跟着往下走的。

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧