我希望json使用php编码函数,如下所示
<?php
require "../classes/database.php";
$database = new database();
header("content-type: application/json");
$result = $database->get_by_name($_POST['q']); //$_POST['searchValue']
echo '{"results":[';
if($result)
{
$i = 1;
while($row = mysql_fetch_array($result))
{
if(count($row) > 1)
{
echo json_encode(array('id'=>$i, 'name' => $row['name']));
echo ",";
}
else
{
echo json_encode(array('id'=>$i, 'name' => $row['name']));
}
$i++;
}
}
else
{
$value = "FALSE";
echo json_encode(array('id'=>1, 'name' => "")); // output the json code
}
echo "]}";
我希望输出json是那样的
{"results":[{"id":1,"name":"name1"},{"id":2,"name":"name2"}]}
但输出json如下所示
{"results":[{"id":1,"name":"name1"},{"id":2,"name":"name2"},]}
当你意识到最后有逗号时,我想删除它所以它可以是正确的json语法,如果我删除了echo ",";
当有多个结果时json会生成这样的{"results":[{"id":1,"name":"name1"}{"id":2,"name":"name2"}]}
{{1}} 1}}并且该语法也是错误的
希望每个人都明白我的意思,任何想法都会受到赞赏
答案 0 :(得分:13)
如果我是你,我不会json_encode
每个单独的数组,而是将数组合并在一起,然后在最后合并数组json_encode
。下面是使用5.4's短数组语法的示例:
$out = [];
while(...) {
$out[] = [ 'id' => $i, 'name' => $row['name'] ];
}
echo json_encode($out);
答案 1 :(得分:9)
将json_encoding作为最后一步。纯粹用PHP构建数据结构,然后在最后编码该结构。做中间编码意味着你基本上构建自己的json字符串,这总是很棘手,很可能“破坏”。
$data = array();
while ($row = mysql_fetch_array($result)) {
$data[] = array('id'=>$i, 'name' => $row['name']);
}
echo json_encode($data);
答案 2 :(得分:1)
首先将它全部构建到一个数组中,然后一次编码整个事物:
$outputdata = array();
while($row = mysql_fetch_array($result)) {
$outputdata[] = $row;
}
echo json_encode($outputdata);
答案 3 :(得分:1)
这是我带来的解决方案
$i = 1;
$array = array();
while($row = mysql_fetch_array($result))
{
$array[] = json_encode(array('id'=>$i, 'name' => $row['name']));
$i++;
}
echo implode(',', $array); // Take output array glue it with the
这会将json放入一个数组,然后使用glue(,)输出以下{"results":[{"id":1,"name":"maadi"},{"id":2,"name":"monofiya"}]}
进行内爆,而无需首先执行数组,然后将其传递给json_encode()函数
答案 4 :(得分:0)
B"H
制作自己的函数非常简单
function son($ar) {
$str = "";
$str .= "{";
$id = 0;
foreach($ar as $a=>$b) {
$id++;
$str .= "\"".$a."\":";
if(!is_numeric($b)) {
$str .= "\"".$b."\"";
} else {
$str .= $b;
}
if($id < count($ar)) {
$str .= ",";
}
}
$str .= "}";
return $str;
}
例如 mysqli...
function noom($rz) {
$ar = array();
if($rz) {
if(mysqli_num_rows($rz) > 0) {
while($k = mysqli_fetch_assoc($rz)) {
foreach($k as $ki=>$v) {
$ar[$ki] = $v;
}
}
}
}
return $ar;
}
和使用
<?php
$o = new mysqli(
"localhost",
"root",""
);
if($o->connect_error) {
echo "DUDE what are you/!";
} else {
if(isset($_GET["t"])) {
$t = $_GET["t"];
$rz = mysqli_query($o,
"SELECT * FROM game.".$t
);
$ar = noom($rz);
echo son($ar);
} else {
echo "B\"H<br>Yo, what's krakin?";
}
}
答案 5 :(得分:-1)
只需改变那些
echo json_encode(array('id'=>$i, 'name' => $row['name']));
echo ",";
到这些
echo ",";
echo json_encode(array('id'=>$i, 'name' => $row['name']));