PHP字符串转JSON实现及去重后JSON结构异常修复咨询
解决PHP输出JSON格式不符合预期的问题
你的问题核心在于每次循环单独输出JSON片段,导致最终结果是多个独立的JSON字符串,而非一个完整的JSON数组。我们需要先把所有符合条件的记录收集到一个数组中,最后统一编码输出,就能得到你想要的格式。
修改后的index.php代码
<?php // PART A require 'conn.php'; $query = "SELECT STAFFID FROM TABLE"; $result = oci_parse($conn, $query); oci_execute($result); $arr = []; // 初始化空数组,避免未定义警告 while ($row = oci_fetch_array($result,OCI_NUM)){ $arr[] = $row[0]; } // PART B $url="http://localhost/fetch_data.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$url); $result=curl_exec($ch); curl_close($ch); // 初始化数组存储最终结果 $finalArray = []; foreach(json_decode($result) as $result2) { if(!in_array($result2[0],$arr)) { // 直接将原始数组添加到结果数组,不需要拼接字符串 $finalArray[] = $result2; } } // 最后一次性输出完整的JSON数组 echo json_encode($finalArray, JSON_PRETTY_PRINT); // JSON_PRETTY_PRINT可选,用于格式化输出 ?>
关键修改点说明
- 初始化结果数组:创建
$finalArray来存放所有符合去重条件的记录,而不是每次循环直接输出。 - 避免字符串拼接:
$result2本身就是从fetch_data.php返回的数组,直接把它加入结果数组即可,不需要手动拼接成字符串。 - 统一编码输出:循环结束后,用
json_encode处理整个结果数组,这样会自动生成外层方括号和正确的元素分隔逗号。 - 可选格式化:添加
JSON_PRETTY_PRINT参数可以让输出的JSON更易读,和你给出的期望格式完全一致。
这样修改后,输出就会是标准的JSON数组格式了。
内容的提问来源于stack exchange,提问作者Rzj Hayabusa
相关产品推荐
相关产品推荐

