Php 来自$\u POST方法的JSON打印结果
当我以数组格式获取结果时,这会阻止我以所需格式发布值 我需要所需格式的结果(这些输入来自while循环): 我得到的结果如下:Php 来自$\u POST方法的JSON打印结果,php,json,Php,Json,当我以数组格式获取结果时,这会阻止我以所需格式发布值 我需要所需格式的结果(这些输入来自while循环): 我得到的结果如下: { "delv_num":"0006020715", "hu_id":"HU000000000000000225", "box_scan_value":"68889", "type":"box", "hu_detail":{ "reference_id":["TD0000000000991","TD0000000000990","TD0000000000767"], "
{
"delv_num":"0006020715",
"hu_id":"HU000000000000000225",
"box_scan_value":"68889",
"type":"box",
"hu_detail":{
"reference_id":["TD0000000000991","TD0000000000990","TD0000000000767"],
"qty":["2","0","0"]
}
}
但我需要以下格式的结果:
{
"delv_num":"0006020715",
"hu_id":"HU000000000000000225",
"box_scan_value":"68889",
"type":"box",
"hu_detail":[{
"reference_id":"TD0000000000991",
"qty":"2"
},
{
"reference_id":"TD0000000000990",
"qty":"0"
},
{
"reference_id":"TD0000000000767",
"qty":"0"
}
]
}
提前谢谢像这样试试
$references = $_POST['ref_id'];
$qtys = $_POST['qty'];
$data = array(
'delv_num' => $delv_num,
'hu_id' => $hu_id,
'box_scan_value' => $box_scan_value,
'type' => $type,
);
$huDetails = [];
foreach($references as $index => $ref){
$huDetails[$index]['ref'] = $ref;
$huDetails[$index]['qty'] = $qtys[$index]; //assuming you have `ref` and `qty` has same number of index, if not then you need to modify your html structure
}
$data['hu_details'] = $huDetails;
print_r(json_encode($data))
你应该可以自己做这件事。如果没有,您应该再次学习php基础知识:
$complete = [
'delv_num' => $delv_num,
'hu_id' => $hu_id,
'box_scan_value' => $box_scan_value,
'type' => $type,
'hu_detail' => []
];
foreach ($_POST['ref_id'] as $index => $refId) {
$huDetail = [
'reference_id'=> $refId,
'qty' => $_POST['qty'][$index]
];
$complete['hu_detail'][] = $huDetail;
}
echo json_encode($complete);
只需通过更改输入的名称来更改表单的结构
<input type="text" name="hu_detail[0][reference_id]" value="abc">
<input type="text" name="hu_detail[0][qty]" value="12">
试试这个:
$result = array();
$array_a = array("1","2","3");
$array_b = array("test1","test2","test3");
foreach($array_a as $key=> $value){
$result[$key]['reference_id'] = $value;
$result[$key]['qty'] = $array_b[$key];
}
$myJSONString = json_encode($result);
一句话中可能的解决方案:
$data1 = [
'delv_num' => $delv_num,
'hu_id' => $hu_id,
'box_scan_value' => $box_scan_value,
'type' => $type,
'hu_detail' => array_map(
function ($id, $qty) {
return ['reference_id': $id, 'qty': $qty];
},
$_POST['ref_id'],
$_POST['qty']
),
];
是什么阻止您构建所需的数据结构?你可能需要更多地了解。这是一个很长的页面,但它包含了你需要的所有答案。我读了,它对我的查询没有帮助。然后再读一遍。提示:用于迭代
$\u POST['ref\u id']
并构建列表以放入'hu\u details'
,不要像在目标对象中一样放入$\u POST['ref\u id']
。将3个数组创建为$data1、$data2、$data3,并传递相应的值,最后合并数组
$result = array();
$array_a = array("1","2","3");
$array_b = array("test1","test2","test3");
foreach($array_a as $key=> $value){
$result[$key]['reference_id'] = $value;
$result[$key]['qty'] = $array_b[$key];
}
$myJSONString = json_encode($result);
$data1 = [
'delv_num' => $delv_num,
'hu_id' => $hu_id,
'box_scan_value' => $box_scan_value,
'type' => $type,
'hu_detail' => array_map(
function ($id, $qty) {
return ['reference_id': $id, 'qty': $qty];
},
$_POST['ref_id'],
$_POST['qty']
),
];