将Array作为Object PHP的键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Array作为Object PHP的键相关的知识,希望对你有一定的参考价值。
我正在为移动应用程序构建一个简单的服务,使用php为移动应用程序提供JSON。我在代码中有两个代码表,在代码段下面:
$con = mysqli_connect(HOST, USER, PASS, DB);
$sql_results = mysqli_query($con, "SELECT * FROM `table-images`");
$sql_results_1 = mysqli_query($con, "SELECT * FROM `table-code` WHERE id='$id'");
$rows = array();
while($r = mysqli_fetch_assoc($sql_results)) {
$rows[] = $r;
}
echo'{"response":'.json_encode($rows).'}';
上面的结果代码:
{
"response": [{
"id": "31",
"shirtImage": "Content/Images/Short Sleeve/874be7b82812f76c944d71706c9651eb.gif"
}, {
"id": "32",
"shirtImage": "Content/Images/Short Sleeve/b-Cleaned.png"
}]
}
我想把sql_results_1
的结果作为结果的关键,这里我需要JSON:
{
"response": [{
"id": "31",
"shirtImage": "Content/Images/Short Sleeve/874be7b82812f76c944d71706c9651eb.gif",
"idcode": [{
"X": 0,
"Y": 1,
"Z": 2
}]
}, {
"id": "32",
"shirtImage": "Content/Images/Short Sleeve/b-Cleaned.png",
"idcode": [{
"X": 2,
"Y": 1,
"Z": 0
}]
}]
}
密钥idcode
来自'$ sql_results_1'。我是PHP编程的新手,我读了一些关于我自己的问题,但结果并不是我所期待的。
编辑
正如@Ashu回答,这里的代码现在:
$final_array = array();
$i=0;
while($r = mysqli_fetch_assoc($sql_results)) {
array_push($final_array,$r);
$res = mysqli_query($con, "SELECT * FROM `table-code` WHERE id='".$row['id']."'");
while($r = mysqli_fetch_assoc($res)) {
$final_array[$i]["idcode"] = array("x"=>$r['x']);
}
$i++;
}
但关键的idcode
是JSONObject "idcode":{x=0}
,我需要它作为JSONArray "idcode":[{x=0}]
答案
首先,我会推荐PDO而不是mysqli。但是对于mysqli,事情如下:
fetch assoc函数:
返回表示结果集中获取的行的字符串的关联数组,其中数组中的每个键表示结果集列之一的名称,如果结果集中没有更多行,则返回NULL。
如果结果的两列或更多列具有相同的字段名称,则最后一列将优先。要访问同名的其他列,您需要使用mysqli_fetch_row()或添加别名来访问带有数字索引的结果。
当您将所有内容推送到数组时,您将拥有一个包含所有结果的多维数组$ rows:
$rows[];
跟着:
foreach($rows as $key => $row) {
$res = mysqli_query($con, "SELECT * FROM `table-code` WHERE id='".$row['id']."'");
$row["idcode"] = mysql_fetch_assoc($res);
$rows[$key] = $row;
}
未经测试。它给你正确的想法吗?
另一答案
第一个结果存储到数组中:
$final_array = array();
while($r = mysqli_fetch_assoc($sql_results)) {
array_push($final_array,$r);
}
第二个表结果,你必须使用$ i在final_array中创建idcode键。
$i=0;
while($r = mysqli_fetch_assoc($sql_results1)) {
$final_array[$i]["idcode"] = array("x"=>$r['x'],"y"=>$r['y'],"z"=>$r['z']);
$i++;
}
echo'{"response":'.json_encode($final_array).'}';
以上是关于将Array作为Object PHP的键的主要内容,如果未能解决你的问题,请参考以下文章