使用数据库中相同的键从数组中输出
make output from array with same keys from the database
我从数据库中获取信息。比如我的数据库数据如下:
我从数据库中获取信息。比如我的数据库数据如下:
-------------------------------------------------
p_id | description_name | description_value |
-------------------------------------------------
1 | author | X1 |
-------------------------------------------------
1 | editor | X2 |
-------------------------------------------------
2 | author | Y1 |
-------------------------------------------------
3 | author | Z1 |
-------------------------------------------------
3 | editor | Z2 |
------------------------------------------------- ...
所以在 php 代码部分我使用这个方法得到 descriptions
:
<?php
...
$result5 = mysqli_query($conn,"SELECT * FROM `descriptions` ");
while ($row5 = $result5 ->fetch_assoc()){
$des[] = [(int) $row5['p_id'] ,[ $row5['description_name'] => $row5['description_value']] ] ;
}
echo json_encode( $des);
?>
这是这段代码的输出:
[[1,{"author": "X1"}],[1,{"editor": "X2"}],[2,{"author": "Y1"}],[3,{"author": "Z1"}],[3,{"editor": "Z2"}],[ ...
但是,我的预期输出是这样的:
[{"p_id" : 1,"author": "X1","editor": "X2"},{"p_id" : 2, "author": "Y1"},{"p_id" : 3,"author": "Z1","editor": "Z2"},{...
希望在您的指导下,这个问题能帮我解决,谢谢...
这段代码的作用是通过 p_id
值索引您的输出,然后如果那里还没有一些数据,它只是添加一个带有 p_id
的新元素。
然后它使用 description_name
和 description_value
元素添加数据...
在 json_encode()
它使用 array_values()
删除用于构建数据的索引...
$des = [];
while ($row5 = $result5 ->fetch_assoc()){
if ( !isset ($des[$row5['p_id']])){
$des[$row5['p_id']] = ["p_id" => (int)$row5['p_id']];
}
$des[$row5['p_id']][$row5['description_name']] = $row5['description_value'] ;
}
echo json_encode(array_values( $des ));
使用一些测试数据,这给出(加上格式)...
[
{
"p_id": 1,
"editor": "X2",
"author": "Y1"
},
{
"p_id": 2,
"editor": "X2"
}
]
我从数据库中获取信息。比如我的数据库数据如下: 我从数据库中获取信息。比如我的数据库数据如下:
-------------------------------------------------
p_id | description_name | description_value |
-------------------------------------------------
1 | author | X1 |
-------------------------------------------------
1 | editor | X2 |
-------------------------------------------------
2 | author | Y1 |
-------------------------------------------------
3 | author | Z1 |
-------------------------------------------------
3 | editor | Z2 |
------------------------------------------------- ...
所以在 php 代码部分我使用这个方法得到 descriptions
:
<?php
...
$result5 = mysqli_query($conn,"SELECT * FROM `descriptions` ");
while ($row5 = $result5 ->fetch_assoc()){
$des[] = [(int) $row5['p_id'] ,[ $row5['description_name'] => $row5['description_value']] ] ;
}
echo json_encode( $des);
?>
这是这段代码的输出:
[[1,{"author": "X1"}],[1,{"editor": "X2"}],[2,{"author": "Y1"}],[3,{"author": "Z1"}],[3,{"editor": "Z2"}],[ ...
但是,我的预期输出是这样的:
[{"p_id" : 1,"author": "X1","editor": "X2"},{"p_id" : 2, "author": "Y1"},{"p_id" : 3,"author": "Z1","editor": "Z2"},{...
希望在您的指导下,这个问题能帮我解决,谢谢...
这段代码的作用是通过 p_id
值索引您的输出,然后如果那里还没有一些数据,它只是添加一个带有 p_id
的新元素。
然后它使用 description_name
和 description_value
元素添加数据...
在 json_encode()
它使用 array_values()
删除用于构建数据的索引...
$des = [];
while ($row5 = $result5 ->fetch_assoc()){
if ( !isset ($des[$row5['p_id']])){
$des[$row5['p_id']] = ["p_id" => (int)$row5['p_id']];
}
$des[$row5['p_id']][$row5['description_name']] = $row5['description_value'] ;
}
echo json_encode(array_values( $des ));
使用一些测试数据,这给出(加上格式)...
[
{
"p_id": 1,
"editor": "X2",
"author": "Y1"
},
{
"p_id": 2,
"editor": "X2"
}
]