[英]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.