我希望以Json的形式输出以下内容:
{
"test": [
{
"Name" : "Alfreds Futterkiste",
"City" : "Berlin",
"Country" : "Germany"
},
{
"Name" : "Berglunds snabbköp",
"City" : "Luleå",
"Country" : "Sweden"
},
{
"Name" : "Centro comercial Moctezuma",
"City" : "México D.F.",
"Country" : "Mexico"
}
]
}
我通过以下代码在php中实现了这一点:
$arr = array(
"test" => array(
array(
"Name" => "Test",
"City" => "Test",
"Country" => "Test"
),
array(
"Name" => "Test",
"City" => "Test",
"Country" => "Test"
),
array(
"Name" => "Test",
"City" => "Test",
"Country" => "Test"
),
)
);
echo json_encode($arr);
但现在,我正在从服务器获取数据。我希望这个数据看起来和上面的json完全一样。如何用从每行提取的数据替换数组?
我通过以下代码从服务器获取数据:
$sql = "SELECT * FROM Customer";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$Name1[] = $row["Name1"];
$Land[] = $row["Land"];
$City[] = $row["City"];
}
} else {
$returnValue["RecordsExisting"] = "False";
}
感谢
试试这样的东西:
$arr = [];
while($row = $result->fetch_assoc()) {
$r = [];
$r['Name'] = $row["Name1"];
$r['City'] = $row["City"];
$r['Country'] = $row["Land"];
$arr[] = $r;
}
然后
echo json_encode($arr);
请注意,此从一开始就不包括test
密钥。
现在,如果你真的需要
test
,就这样做:
$foo = array('test' => $arr);
echo json_encode($foo);
(未测试,但…)由于您使用的是我认为是mysqli的fetch_assoc,因此不需要更改密钥。有一种变通方法,你可以利用它。如果你这样使用
select
,你可能会得到同样的结果(它可能是小写的):
SELECT Name1 as Name, City, Land as Country FROM Customer;
您可以从本页中查看一些别名示例
这样你就可以:
while(...
$arr[] = array($row["Name"], $row["City"], $row["Country"]);
)
// 'test' add part
echo ...