我是PHP语言的新手。我正在编写PHP脚本以从我的在线数据库(在我的altervista个人网页上创建)获取信息并以JSON格式转换。 问题是当我从我的数据库中获取元素时,我可以使用" echo"正确显示它们。命令,但是当我将关联数组解析为" json_encode"功能我无法正确看到元素。
以下是代码:
$sql = "SELECT * FROM People";
$result = $conn->query($sql);
$json_array = array();
if ($result->num_rows > 0) {
// output data of each row
$row = $result->fetch_assoc();
foreach($row as $key => $value) {
echo "" . $key . ": " . $value;
echo "<br>";
$json_array[] = array(''=>$key, ''=>$value);
}
} else {
echo "0 results";
}
echo json_encode($json_array);
$conn->close();
?>
$result->fetch_assoc();
返回一个关联数组。
正如我之前所说,我可以使用echo命令查看正确的信息。
问题是当我使用它时:
$json_array[] = array(''=>$key, ''=>$value);
输出如下:
[{"":"Mark"},{"":"ABC"},{"":"25"}]
基本上它只显示第二个参数&#34; =&gt; $ value&#34;,而第一个参数&#34; =&gt; $ key&#34;被忽略了。
你能告诉我,为了看到输出中的第一个参数,我应该改变什么?
由于
答案 0 :(得分:0)
正确的方法是做到这一点
$json_array[] = array( $key => $value );
而不是
$json_array[] = array(''=>$key, ''=>$value);
您实际上是首先添加一个EMPTY字符串作为键,并将$ key作为值添加,然后将它替换为$ value,因为它们共享数组中的EMPTY字符串键。
阅读详情:http://php.net/manual/en/language.types.array.php#language.types.array.syntax.array-func
答案 1 :(得分:0)
第一个参数被忽略,因为它与第二个密钥具有相同的密钥(密钥是&#39;&#39;),您应该写:
$json_array[] = array($key, $value); // Indexed array
输出将是:
[["key1", "value1"],["key2", "value2"],["key3", "value3"]]
OR
$json_array[] = array($key => $value); // Associative array
输出将是:
[{"key1": "value1"},{"key2": "value2"},{"key3": "value3"}]
答案 2 :(得分:0)
尝试:
sql = "SELECT * FROM People";
$result = $conn->query($sql);
$json_array = array();
if ($result->num_rows > 0) {
// output data of each row
while ($row = $result->fetch_assoc()) {
$json_array[] = $row;
}
} else {
echo "0 results";
}
echo json_encode($json_array);
$conn->close();
在您的代码中,您只解析第一个db结果