繁体   English   中英

使用foreach循环获取数组的值

[英]Get the values of array using foreach loop

我有一个从android收到的数组,必须将其插入到带有用户,产品,备注,颜色,大小,计数的字段的mysql表中。 我无法获取包含大小和计数的内循环数据的值,它显示错误

$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 
                                                            ) 
                                                                                    ) 
                                        ) 
                                ) 
                ) 
        ) ;

请帮助我。谢谢

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
                } <---

           ]}

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

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

有了这个:

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

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

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

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

 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循环。

现在给出输出为

在此处输入图片说明

现在,您可以轻松地将数据插入数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM