Php 来自$\u POST方法的JSON打印结果

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"], "

当我以数组格式获取结果时,这会阻止我以所需格式发布值

我需要所需格式的结果(这些输入来自while循环):

我得到的结果如下:

{
"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']
    ),
];