繁体   English   中英

在json_encode()之后在数据库中插入值

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

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