如何以key:value格式编写JSON数组

时间:2019-07-18 07:58:04

标签: php arrays json

我正在尝试从PHP输出中获取一个JSON数组,该输出从数据库中获取多个值并转换为JSON数组。 PHP代码如下:

php
$result = $conn->query("SELECT dbname FROM users ORDER BY dbname ASC");
//defined second array for dbnames' list
$dblist = array();
while($row = $result->fetch_assoc()){
    //array_push($response['dblist'],$row['dbname']);
    $dblist = array('name'=>$row['dbname']);
}
$response['dblist'] = $dblist;
echo json_encode($response);

它提供以下输出:

JSON
{"dblist":["a","arsod"]}

但是,为了从JSON提取值,所需的数组如下:

json
{"dblist":{"name":"a","name":"arsod"}}

我该如何实现?我想在Android应用程序中获取这些值。

2 个答案:

答案 0 :(得分:0)

尝试一下:

$result = $conn->query("SELECT dbname FROM users ORDER BY dbname ASC");
$dblist = [];
while($row = $result->fetch_assoc()){
    $dblist[] = ['name'=>$row['dbname']];
}
$response['dblist'] = $dblist;

echo json_encode($reposne);

我基本上将[]添加到$ dbList中,所以看起来像$ dbList [] = ...

并且,您将获得一个如下所示的有效JSON:

{"dblist":[{"name":"a"},{"name":"b"}]}

您请求输出不是一个好主意,因为您将在JSON中使用重复的键

答案 1 :(得分:0)

您的错误是一个常见错误,基本上只影响此行:

$dblist = array('name'=>$row['dbname']);

在每次迭代中将$dblist设置为新创建的数组。您要做的是在每次迭代中将添加新条目添加到列表中

$entry = array('name'=>$row['dbname']);
array_push($dblist, $entry);

相同
$entry[] = array('name'=>$row['dbname']);