【问题标题】:Get the values of array using foreach loop使用 foreach 循环获取数组的值
【发布时间】:2017-06-26 07:03:48
【问题描述】:

我有一个从 android 接收到的数组,它必须插入到 mysql 表中,其中包含字段 user、product、remark、color、size、count。 我无法获取包含大小和计数的内部循环数据的值。它显示错误

$dat='[{"user":10,
        "product":58,
        "remarks":"ok",
        "details":[{
                 "color":"Red",
                 "data":[{
                        "size":12,
                        "count":1
                  },
                  {
                        "size":14,
                        "count":2
                  }]
         }]
    },
    {"user":10,
     "product":60,
     "remarks":"okk",
     "details":[{
              "color":"Black",
              "data":[{
                     "size":10,
                     "count":5
                     },

              ]},{
             "color":"Red",
             "data":[{
                   "size":10,
                   "count":3
                    },

               ]}
      ]}
 ]';

这是我试过的代码。

$s = json_decode($dat, true);
print_r($s);


foreach($s as $item)
{
    foreach($item as $details) {
        foreach($details as $data) {

                echo "user".$item['user'];
                echo "product".$item['product'];
                 echo "remarks".$item['remarks'];
                 echo "color".$details['color'];
                echo "size".$data['size'];
                echo "count".$data['count'];


        }
    }
}

这是print_r($s)的输出

Array(
        [0] => Array (
                 [user] => 10
                 [product] => 58 
                 [remarks] => ok
                 [details] => Array (
                             [0] => Array(
                                      [color] => Red
                                      [data] => Array ( 
                                                [0] => Array (
                                                    [size] => 12
                                                    [count] => 1
                                                        ) 
                                                [1] => Array (
                                                    [size] => 14 
                                                    [count] => 2 
                                                        ) 
                                                )
                                    ) 
                             ) 
                 ) 
        [1] => Array (
                [user] => 10 
                [product] => 60 
                [remarks] => okk 
                [details] => Array ( 
                                [0] => Array (
                                         [color] => Black 
                                         [data] => Array( 
                                                    [0] => Array ( 
                                                        [size] => 10 
                                                        [count] => 5 
                                                            ) 
                                                                                    ) 
                                         ) 
                                [1] => Array( 
                                        [color] => Red 
                                        [data] => Array ( 
                                                    [0] => Array( 
                                                        [size] => 10 
                                                        [count] => 3 
                                                            ) 
                                                                                    ) 
                                        ) 
                                ) 
                ) 
        ) ;

请帮助我。在此先感谢

【问题讨论】:

  • print_r($s) 的输出是什么?
  • 您的 JSON 数据有一些问题,请先修复它们,使用 json.parser.online.fr

标签: php for-loop multidimensional-array foreach


【解决方案1】:
foreach($s as $item)
{
            echo "user".$item['user'];
            echo "product".$item['product'];
            echo "remarks".$item['remarks'];
            foreach($item['details'] as $detail)
            {
                echo "color".$detail['color'];
                foreach($detail['data'] as $data)
                {
                    echo "size".$data['size'];
                    echo "count".$data['count'];
                }
            }
}

你的 json 得到 2 个逗号,你必须删除它们

"details":[{
          "color":"Black",
          "data":[{
                 "size":10,
                 "count":5
                 } <---

          ]},{
         "color":"Red",
         "data":[{
               "size":10,
               "count":3
                } <---

           ]}

【讨论】:

    【解决方案2】:

    尝试在 MacBooc 的回答中替换以下行:

    foreach($item['detail'] as $detail)
    

    用这个:

    foreach($item['details'] as $detail)
    

    【讨论】:

    • @MacBooc Yes..true :)
    • @MacBooc 谢谢 :)
    【解决方案3】:

    看起来你有一个多维数组,这让你在向 MySQL 表中插入数据时感到困惑。

    要解决这个问题,您必须将数组制作成二维数组,以便您可以轻松地将数据插入数据库。

    为此,您必须使用此函数将数组变为二维:-

     function array_flatten($array) {
        if (!is_array($array)) {
            return FALSE;
        }
        $result = array();
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                $result =$result+$this->array_flatten($value);
            }
            else {
                $result[$key] = $value;
            }
        }
    
        return $result;
    }
    

    在这里你只需要使用一个 foreach 循环

    就像这样:-

     $data=['size'=>22,'count'=>3];
        $details=['size'=>23,'color'=>'red','data'=>$data];
        $s []= ['user'=>'10','product'=>58,'details'=>$details];
        $s []= ['user'=>'10','product'=>58,'details'=>$details];
        $data='';
        foreach($s as $item)
        {
         $data[]=$this->array_flatten($item);
        }
        dd($s,$data);
    

    这里我创建了一个数组,例如在那个地方你必须将你的数组提供给 foreach 循环。

    现在它给出的输出为

    现在您可以轻松地将数据插入到您的数据库中。

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 2018-07-15
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多