繁体   English   中英

尝试在PHP中将数组编码为json

[英]Trying to encode an array to json in PHP

我在stackoverflow上看到了很多线程,人们将数组转换为json。 而且我非常确定这应该可行,但事实并非如此。 MySQL很好,查询按预期工作:

$json = array();
if($result = $mysqli->query($query)){
    while($row = $result->fetch_array()){
        $json[]["id"] = $row[0];
        $json[]["trivialname"] = $row[1];
        $json[]["chemischername"] = $row[2];
        $json[]["formel"] = $row[3];
    }
    echo $json[0]["id"]; //just for testing.
    echo json_encode($json);
}

对不起,英语不好。

我的问题主要是echo json_encode($ json); 什么都不显示

编辑:我的代码看起来像这个atm。

if($result = $mysqli->query($query)){
            $json = array();
            while($row = $result->fetch_assoc()){
                $json[]=$row;
                printf("%s (%s) ID: %s, Formel:%s <br>", $row["Trvialname"], $row["Chemischername"], $row["ID"],$row["Formel"]);
            }
            echo json_encode($json);

        }

它向我显示了: Phthalimid (1,2-Benzoldicarboximid) ID: 2, Formel:C8H5NO2 Phthalsäureanhydrid (2-Benzofuran-1,3-dion) ID: 3, Formel:C8H4O3

没有其他的! 我能改变:

echo json_encode($json);

echo json_encode($json[0]);

它将添加以下行:

{"ID":"2","Trvialname":"Phthalimid","Chemischername":"1,2-Benzoldicarboximid","Formel":"C8H5NO2"}

foreach($json[1] as $value){
    echo $value."<br>";
}

将显示所有内容,但

echo json_encode($json[1]);

犯规。

$mysqli->set_charset('utf8');

多亏你的常识

将您的代码更新为

$json = array();
if($result = $mysqli->query($query)){
    while($row = $result->fetch_array()){
        $r = array();
        $r["id"] = $row[0];
        $r["trivialname"] = $row[1];
        $r["chemischername"] = $row[2];
        $r["formel"] = $row[3];
        $json[] = $r;
    }
    echo $json[0]["id"]; //just for testing.
    echo json_encode($json);
}
$json = array();
while($row = $result->fetch_assoc()){
    $json[] = $row;
}
echo json_encode($json);

在我的一生中,我永远都不会理解为什么PHP用户总是为每个琐碎的操作写这么多代码

您也可以尝试json_last_error(),然后将此调用添加到mysqli连接代码中

$mysqli->set_charset('utf8');

您并没有按照自己的想法构建阵列。 您添加的每个元素都会在数组中添加行,这就是$json[]所做的。 您将得到一个如下数组:

array(
    array('id' => 1),
    array('trivialname' => 'foo'),
    # etc.
)

您想要做的是:

$json[] = array(
    "id" => $row[0],
    "trivialname" => $row[1],
    "chemischername" => $row[2],
    "formel" => $row[3]
);

这将建立您想要的结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM