我从mysql表中获取值。然后我将值放在数组中并使用php内置函数json_enconde
将这些值转换为json格式。我收到的结果却没有达到预期的格式。在PHP代码中,您将注意到我正在使用数组并使用foreach
循环获取值以将所有值放入其中。结果我得到了几个json对象。如何只返回一个具有相应值的json对象?
header("Content-type: application/json");
$query = $db_con->prepare("SELECT id, name FROM table");
$query->execute();
$data = $course_query->fetchAll();
$json_data = array();
foreach ($data as $row) {
$json_data[] = array(
$row["id"] => $row["name"]
);
} // foreach ($data as $row) {
echo json_encode($json_data);
结果:
{
1: "Item1"
},
{
2: "Item2"
},
{
3: "Item3"
}
期望的结果:
{
"1":"Item1",
"2":"Item2",
"3":"Item3"
}
答案 0 :(得分:1)
试试这个
foreach ($data as $row) {
$id=$row["id"];
$json_data[$id] =$row["name"];
}
问题在于,在foreach循环中定义json_data中的值时,您将为每个值创建一个数组,因此您无法获得所需的结果。
答案 1 :(得分:1)
更改此array( $row["id"] => $row["name"]);
至for $json_data[$row["id"] ] = $row["name"]
在for循环中
foreach ($data as $row) {
$json_data[$row["id"] ] = $row["name"];
}
答案 2 :(得分:1)
您需要更改PHP代码以创建普通的单维数组,现在您正在创建一个多维数组。你的PHP应该是这样的:
header("Content-type: application/json");
$query = $db_con->prepare("SELECT id, name FROM table");
$query->execute();
$data = $course_query->fetchAll();
$json_data = array();
foreach ($data as $row) {
$json_data[$row["id"]] = $row["name"];
} // foreach ($data as $row) {
echo json_encode($json_data);
注意foreach循环中的更改,我们不再将新数组附加到$json_data
数组(这将创建一个多维数组)。这将为您提供具有正确键:值对的单维数组。然后,当您运行json_encode时,您将获得所需的JSON格式。