我需要使用以下输入数组创建一个新数组,然后将其转换为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"
}
}
}
}
答案 0 :(得分:1)
你可以这样做:
<?php
$newArray = array(
"option1" => $array1,
"option2" => $array2,
"option3" => $array3
);
echo(json_encode($newArray));
?>
这就是如何简单地从某些数组创建单个数组。它会帮助你
答案 1 :(得分:1)
我这样做:
$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()加在一起。