【问题标题】:loop through subArray as $key => $value in PHP在 PHP 中作为 $key => $value 循环遍历 subArray
【发布时间】:2016-07-21 02:17:47
【问题描述】:

鉴于此数据结构

    array(2) {
    [0] array(7) {
        ["model_id"] 218
        ["total"] 10
        ["brand"] "This Brand"
        ["model_name"] "This Name"
        ["picture"] "this pic.jpg"
        ["color"] "Black"
        ["sizes"] array(3) {
            ["4"] "10 %"
            ["5"] "80 %"
            ["6"] "10 %"
        }
    }
    [1] array(7) {
        ["model_id"] 219
        ["total"] 10
        ["brand"] "This Brand"
        ["model_name"] "ThatName"
        ["picture"] "that pic.jpg"
        ["color"] "Black"
        ["sizes"] array(3) {
            ["4"] "20 %"
            ["5"] "50 %"
            ["6"] "30 %"
        }
    }
}

您如何以$key => $value 循环进入sizes

到目前为止,我尝试的方法都不起作用,比如嵌套循环。

foreach($array as $i){

            foreach($i as $z){

                foreach($z as $key => $value){

                    print_r($key);

                }  
            }
        }
    }

导致错误Invalid argument supplied for foreach()

【问题讨论】:

  • 您的数据结构是 JSON,而不是 PHP 数组。你知道吗?您正在寻找的是对函数的递归调用:只要函数想要在数组内部更深一层,就会调用自身。
  • 它看起来像json数据首先你必须通过json_decode函数解码这个值。
  • foreach($i as $z) 更改为 foreach($i['size'] as $kye => $value) 并删除下一个 foreach。我认为你有一个额外的 foreach

标签: php arrays loops multidimensional-array iteration


【解决方案1】:
foreach($array as $i){
    foreach($i['sizes'] as $key => $value){
        echo $key.'->'.$value;
    }       
}

【讨论】:

  • 这个答案缺少教育解释。
【解决方案2】:
$arrayas = json_decode($array);
foreach($arrayas $i){

        foreach($i as $z){

            foreach($z as $key => $value){

                print_r($key);

            }  
        }
    }
}

试试这个

【讨论】:

    【解决方案3】:

    请试试这个

    $decarray = json_decode($array);
    
    foreach($decarray as $keyDec => $valArr ){
        foreach($valArr as $keyOuter => $valOuter){
            if($keyOuter == "sizes"){
                foreach($valOuter as $keyInner => $valInner){
                    echo $keyInner.":".$valInner ''
                }  
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 2010-11-15
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多