如何重组我的多维阵列和输出为JSON



我需要使用以下输入数组创建一个新数组,然后将其转换为JSON值。
您能为此提供帮助吗?

[options_label] => Color
[options_value] => Array
    (
        [0] => Red
        [1] => Blue
    )
[options_qty] => Array
    (
        [0] => 10
        [1] => 20
    )
[options_sub_label_0] => Array
    (
        [0] => Sizes
    )
[options_sub_value_0] => Array
    (
        [0] => S
        [1] => M
    )
[options_sub_qty_0] => Array
    (
        [0] => 4
        [1] => 6
    )
[options_sub_label_1] => Array
    (
        [0] => Sizes
    )
[options_sub_value_1] => Array
    (
        [0] => M
        [1] => L
    )
[options_sub_qty_1] => Array
    (
        [0] => 8
        [1] => 12
    )

这是我需要生成的JSON:

{
    "Color":{
        "Red":{
            "Quantity": "10",
            "Sizes":{
                "S": "4",
                "M": "6"
            }
        },
        "Blue":{
            "Quantity": "20",
            "Sizes":{
                "S": "8",
                "M": "12"
            }
        }
    }
}

我会这样做:

$array=[
    'options_label'=>'Color',
    'options_value'=>['Red','Blue'],
    'options_qty'=>[10,20],
    'options_sub_label_0'=>['Sizes'],
    'options_sub_value_0'=>['S','M'],
    'options_sub_qty_0'=>[4,6],
    'options_sub_label_1'=>['Sizes'],
    'options_sub_value_1'=>['M','L'],
    'options_sub_qty_1'=>[8,12]
    ];
foreach($array['options_value'] as $k=>$v){
    $result[$array['options_label']][$v]=[
        "Quantity"=>$array['options_qty'][$k],
        $array["options_sub_label_$k"][0]=>array_combine($array["options_sub_value_$k"],$array["options_sub_qty_$k"])
    ];
}
echo json_encode($result);

输出:

{"Color":{"Red":{"Quantity":10,"Sizes":{"S":4,"M":6}},"Blue":{"Quantity":20,"Sizes":{"M":8,"L":12}}}}

您必须做的第一件事是从您的输入数组中生成一个新数组。唯一的小棘手部分是使用options_value的索引/键正确访问_sub_元素。

因为options_sub_label_的仅具有一个元素,因此0访问它。 options_sub_value_options_sub_qty_最好使用Array_combine((。

连接在一起

您可以做到这一点:

<?php
$newArray = array(
    "option1" => $array1,
    "option2" => $array2,
    "option3" => $array3
    );
echo(json_encode($newArray));
?>

这就是如何简单地从某些数组创建一个单个数组的方法。希望它可以帮助您

最新更新