如何删除使用json_encode与MySQL获取数组结果时的分隔逗号
问题根因
- 你调用
mysqli_fetch_array时指定了MYSQLI_NUM参数,返回的每行结果是索引数组,json_encode后传到前端的names是二维数组结构,格式为[[30,"Richard","Léa"],[29,"Brown","Mike"]]。数组本身没有replace方法,直接调用会触发JS异常,导致变量异常为空。 - 循环固定写死遍历10次,如果查询结果行数不足10,会出现下标访问越界错误,加重异常。
解决方案
方案1:PHP端预处理(推荐)
直接在服务端把每行数据拼接为无逗号的字符串,前端开箱即用:
$query = "SELECT id, nom, prénom FROM membres"; $result = mysqli_query($mysqli, $query); $products = []; while($product = mysqli_fetch_array($result, MYSQLI_NUM)) { // 用空格拼接数组成员,完全避免逗号 $products[] = implode(' ', $product); }
前端接收代码不用改:
var names = <?php echo json_encode($products) ?>;
方案2:JS端适配二维数组结构
如果不修改后端代码,前端按数组结构处理即可:
var names = <?php echo json_encode($products) ?>; // 取数组实际长度遍历,避免越界 for(let x = 0; x < names.length; x++){ // 把每行的数组成员用空格拼接 names[x] = names[x].join(' '); }
两种方案处理后,names的最终结构都是["30 Richard Léa", "29 Brown Mike"],完全符合去除逗号的需求。
内容的提问来源于stack exchange,提问作者Latets
相关产品推荐
相关产品推荐

