我有一个搜索查询
$sql="SELECT user_id,user_name,user_occupation FROM profile WHERE user_email LIKE '%peace%'";
$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
while ($data=mysql_fetch_assoc($result))
{
$jsonResult .=json_encode($data).',';
}
$jsonResult .= ']}';
echo $jsonResult;
在提到How to remove last comma (,) from array?之后,我添加了
$sql="SELECT user_id,user_name,user_occupation FROM profile WHERE user_email LIKE '%peace%'";
$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
while ($data=mysql_fetch_assoc($result))
{
$jsonResult .=json_encode($data).',';
}
$jsonResult .= ']}';
$finalResult = rtrim(',',$jsonResult);
echo $finalResult;
这给了我一个输出......
{"results" : [ {"user_id":"2","user_name":"peace","user_occupation":"Web Developer"},
{"user_id":"3","user_name":"lover","user_occupation":"Web Developer"}
{"user_id":"4","user_name":"User4","user_occupation":"Developer"},
{"user_id":"5","user_name":"User5","user_occupation":"Developer"},]}
我想删除结果数组中的最后一个逗号
答案 0 :(得分:5)
不是在循环中构建字符串,而是填充数组,每个元素都是结果集中的单个关联数组(行)。然后,在循环之后,只需对你构建的数组进行json_encode。
答案 1 :(得分:2)
这样做
$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
$i=0;
while ($data=mysql_fetch_assoc($result)) {
if($i != 0){
$jsonResult .=',';
}
$jsonResult .=json_encode($data);
i++;
}
$jsonResult .= ']}';
答案 2 :(得分:1)
rtrim()
从字符串末尾删除字符。当您添加]}
时,逗号不再是最后一个。
在添加最后一部分之前修剪逗号:
$finalResult = rtrim(',',$jsonResult);
$finalResult .= ']}';
尽管如Christopher所说,手动构建JSON字符串并不是一个好主意。
答案 3 :(得分:0)
你可以尝试从传入的结果中填充一些数组,然后只需json编码该数组,如
..push result row arrays to $result ..
$data = array('results' => $results);
json_encode($data);
答案 4 :(得分:0)
$sql="SELECT user_id,user_name,user_occupation FROM profile WHERE user_email LIKE '%peace%'";
$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
$counter = 1;
while ($data=mysql_fetch_assoc($result))
{
if($counter!=1)
{
$jsonResult .= ','.json_encode($data);
}
else
{
$jsonResult .=json_encode($data);
}
$counter++;
}
$jsonResult .= ']}';
$finalResult = rtrim(',',$jsonResult);
echo $finalResult;