循环遍历PHP多维数组

时间:2016-04-15 09:55:15

标签: php

我正在尝试循环遍历多维数组,但在foreach循环中它只输出错误

  

索引'名称'未找到。指数'卡路里'不是创始人

        foreach($responsex['foods'] as $fx5)
        {
            echo($fx5['name']);
            echo($fx5['calories']);
        }

回复:即 $ responsex

  

数组(' encodedId' =>' 4H8xxx',' displayName' =>' sam',)数组(3) {   ["食品"] => array(3){[0] => array(5){[" isFavorite"] =>布尔(假)   [" LOGDATE"] => string(10)" 2016-04-15" [" LOGID"] => INT(7139364449)   [" loggedFood"] => array(10){[" accessLevel"] =>字符串(6)" PUBLIC"   ["量"] => int(2)["品牌"] => string(0)"" ["卡路里"] => INT(574)   [" foodId"] => int(536497687)[" locale"] => string(5)" en_AU"   [" mealTypeId"] => int(7)[" name"] => string(14)" Potato Pudding"   ["单元"] => array(3){[" id"] => int(91)[" name"] => string(3)" cup"   ["多个"] => string(4)" cups" } ["单位"] => array(8){[0] => INT(6754)   [1] => int(91)[2] => int(256)[3] => int(279)[4] => int(226)[5] =>   int(180)[6] => int(147)[7] => int(389)}} [" nutrition值"] =>   array(6){["卡路里"] => int(574)["碳水化合物"] => float(49.16)[" fat"] =>   float(34.98)[" fiber"] => float(3.6)["蛋白质"] =>浮动(16.1)   ["钠"] => int(1524)}} [1] => array(5){[" isFavorite"] =>   bool(false)[" logDate"] => string(10)" 2016-04-15" [" LOGID"] =>   int(7138517833)[" loggedFood"] => array(10){[" accessLevel"] =>   字符串(6)" PUBLIC" ["量"] => int(1)["品牌"] => string(0)""   ["卡路里"] => int(359)[" foodId"] => int(535239347)[" locale"] =>   string(5)" en_AU" [" mealTypeId"] => int(7)[" name"] => string(54)" Fish,   奶酪酱面条和蔬菜(混合物)" ["单元"] =>阵列(3)   {[" id"] => int(91)[" name"] => string(3)" cup" ["多个"] =>串(4)   "杯" } ["单位"] => array(8){[0] => int(6837)[1] => int(91)[2] =>   int(256)[3] => int(279)[4] => int(226)[5] => int(180)[6] => INT(147)   [7] => int(389)}} [" nutrition值"] => array(6){["卡路里"] =>   int(359)["碳水化合物"] => float(28.01)[" fat"] => float(14.05)[" fiber"] =>   float(2.9)["蛋白质"] => float(29.08)[" sodium"] => int(534)}} [2] =>   array(5){[" isFavorite"] => bool(false)[" logDate"] =>串(10)   " 2016年4月15日" [" LOGID"] => int(7138326866)[" loggedFood"] => array(10){   [" ACCESSLEVEL"] =>字符串(6)" PUBLIC" ["量"] => int(1)["品牌"] =>   string(0)"" ["卡路里"] => int(157)[" foodId"] => INT(536493638)   ["区域设置"] => string(5)" en_AU" [" mealTypeId"] => int(7)[" name"] =>   string(11)" Cashew Nuts" ["单元"] => array(3){[" id"] => INT(226)   ["名称"] => string(2)" oz" ["多个"] => string(2)" oz" } ["单位"] =>   array(4){[0] => int(226)[1] => int(180)[2] => int(147)[3] => INT(389)   }" nutritionalValues"] => array(6){["卡路里"] => INT(157)   ["碳水化合物"] => float(8.56)[" fat"] => float(12.43)[" fiber"] =>浮动(0.9)   [&#34蛋白质"] => float(5.17)[" sodium"] => int(3)}}} ["目标"] =>   array(2){["卡路里"] => int(1161)[" estimatedCaloriesOut"] =>   int(1411)} ["摘要"] => array(7){["卡路里"] => INT(1090)   ["碳水化合物"] => float(85.73)[" fat"] => float(61.46)[" fiber"] =>浮动(7.4)   [&#34蛋白质"] =>漂浮(50.35)["钠"] => int(2061)[" water"] => int(0)}   }

2 个答案:

答案 0 :(得分:1)

您可以递归迭代数组并按如下方式将它们打印为键值对。

<?php 
//initially call the function
print_array($responsex);

//if you are sure that the array is two dimensional, no need to go recursively.
function print_array($array){
    foreach($array as $key=>$value){
        if(is_array($value)){
            if($key==="foods"){
                var_dump($array[$key]);
            }
        }
        else{
            echo($key." => ".$value);
        }
    }
}

您可以使用上述代码定义除打印以外的其他任务。

修改

如果您确定该数组是二维的,则无需递归。

{{1}}

答案 1 :(得分:0)

使用这种方式..

<?php

 $keys = array_keys($data);// put your array name as a place of $data
    $iterations = count($array[$keys[0]]);

    for($i = 0; $i < $iterations; $i++) {
        $data = array();
        foreach($array as $key => $value) {
            $data[$key] = $value[$i];
        }
        print_r($data);
    }

?>