[英]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.