[英]Insert values in database after json_encode()
我有二维数组,得到了所需的结果。 现在,我需要将其插入数据库。
如果情况为[[]],则这是db中的一行,并且在db中具有特定编号(应以1开头)。
如果情况为[[],[]],在这种情况下,方括号中的值是维度,每个方括号是行,但它们的名称相同,例如ex 2。
如果[[],[],[],[]]内有更多括号,在这种情况下,我们将有4行具有相同的名称。
我的数据库看起来像
ID | 尺寸| 名称
ID-我从下面获取的自动增量尺寸。
对于前。 [[12500,10]]-是一行,对于NAME,它的编号为1。[[12500,8],[6400,2]]-这是下面数组中的六个元素。 数据库中将有两行,并且名称为6。
回声json_encode($ pak); //在下面产生输出
"[[[12500,10]],[[12500,10]],[[12500,10]],[[12500,10]],[[12500,10]],[[12500,8],[6400,2]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[5558,10]],[[5558,10]],[[5558,8],[4600,2]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,6],[4500,4]],[[4500,10]],[[4500,10]],[[4500,10]],[[4500,10]],[[4500,8]]]"
我被困在这里,任何帮助表示赞赏。
我们可以通过递归来实现。
但是这里我没有使用递归(因为我不擅长此事)
我没有正确测试,因此请仔细检查。 让我知道是否有任何问题。
$data = "[[[12500,1]],[[12500,2]],[[12500,3]],[[12500,4]],[[12500,5]],[[111111,6],[22222,6]],[[6400,7]],[[6400,8]],[[6400,9]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[6400,10]],[[5558,10]],[[5558,10]],[[5558,8],[4600,2]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,10]],[[4600,6],[4500,4]],[[4500,10]],[[4500,10]],[[4500,10]],[[4500,10]],[[4500,8]]]";
$decoded = json_decode($data);
$namedArray = fix_name($decoded);
$insertArray = arrange_array($namedArray);
echo "<pre>";
print_r($insertArray);
echo "</pre>";die;
// Fix the Name first
function fix_name($decoded)
{
$number = 1;
foreach ($decoded as $key=> $value) {
$value['name'] = $number;
$insertArray[] = $value;
$number++;
}
return $insertArray;
}
function arrange_array($namedArray)
{
$insertArray = [];
foreach ($namedArray as $array) {
if (count($array) > 2) {
$name = $array['name'];
unset($array['name']);
foreach ($array as $key => $value) {
$array[$key]['name'] = $name;
}
foreach ($array as $arr) {
$insertArray[] = arrange($arr);
}
} else {
$temp['DIMENSIONS '] = $array[0];
$temp['NAME'] = $array['name'];
$insertArray[] = $temp;
}
}
return $insertArray;
}
function arrange($array)
{
$temp = [];
$temp['DIMENSIONS'] = [$array[0], $array[1]];
$temp['NAME'] = $array['name'];
return $temp;
}
处理:
第一:固定名称
下一个:如果count> 2(因为在上一个函数中添加了“ name”键,所以至少要有两个)
然后以不同的方式排列
其他
键0为DIMENSIONS,键名称为NAME
注意:还有其他方法可以实现它,但是为了快速修复,我给出了此方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.