2

我正在尝试打印 json_encode 并且输出重复。我确定数据库中有一条记录,但它以不同的格式显示相同的记录数据两次。就是这个:

[{"0":"Polo","name":"Polo","1":"City ","location":"City ","2":"Manama","city":"Manama"}]

这背后的代码是:

$dataArray = array();
while($r = mysql_fetch_array($result))
{
    $dataArray[] = $r;
}

print json_encode($dataArray, JSON_UNESCAPED_UNICODE);

任何想法?

4

4 回答 4

6

这是因为默认行为mysql_fetch_array()是返回列名和索引键控数组。

使用mysql_fetch_assoc()或设置的第二个参数mysql_fetch_array()

while($r = mysql_fetch_assoc($result)) {
    $dataArray[] = $r;
}
于 2013-07-25T19:51:58.817 回答
0

您应该设置另一种获取样式。它现在使用基于 0 的索引和名称来获取所有列。

这应该按预期工作:

$dataArray = array();
while($r = mysql_fetch_array($result, MYSQL_ASSOC))
{
    $dataArray[] = $r;
}

print json_encode($dataArray, JSON_UNESCAPED_UNICODE);
于 2013-07-25T19:52:20.347 回答
0

你得到这个是因为你可以通过名称或列索引访问结果,但是你正在序列化整个事情,所以两种获取数据的方式都显示出来了。

于 2013-07-25T19:52:43.567 回答
0

尝试这个

//$dataArray = array();
while($r = mysql_fetch_array($result))
{
    $dataArray[] = $r;
}

print json_encode($dataArray, JSON_UNESCAPED_UNICODE);

我评论了第一行。因为你像那样使用 $dataArray[]。

于 2013-07-25T19:54:55.567 回答