PHP将关联数组内容显示为JSON格式

时间:2017-05-28 11:04:50

标签: php arrays json database associative-array

我是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;被忽略了。

你能告诉我,为了看到输出中的第一个参数,我应该改变什么?

由于

3 个答案:

答案 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结果