我正在尝试从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应用程序中获取这些值。
答案 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']);