试图将这两个 json 数组合并到 php
trying to combine these two json arrays in php
我试过 json_combine
和 array_merge
之类的方法,但我不知道该怎么做。
$query2 = "SELECT DISTINCT cat_id,cat_name FROM review WHERE user_id = ? AND public_or_private = 0";
$stmt2 = $con->prepare($query2) or die(mysqli_error($con));
$stmt2->bind_param('i', $user_id) or die ("MySQLi-stmt binding failed ".$stmt2->error);
$stmt2->execute() or die ("MySQLi-stmt execute failed ".$stmt2->error);
$result2 = $stmt2->get_result();
$array1 = array();
while ($row = mysqli_fetch_assoc($result2)) {
$array1['results'][] = $row;
}
echo json_encode($array1);
json_encode
给我:
{"results":[{"cat_id":4,"cat_name":"dentist"}]}
在我的代码中进一步向下:
$query3 = "SELECT DISTINCT cat_id,cat_name FROM review WHERE public_or_private = 2";
$result3 = mysqli_query($con,$query3);
$array2 = array();
while($row = mysqli_fetch_assoc($result3)) {
$array2['results'][] = $row;
}
echo json_encode($array2);
json_encode
给我:
{
"results": [{
"cat_id": "8",
"cat_name": "dental hygienist"
}, {
"cat_id": "5",
"cat_name": "stocktaker"
}, {
"cat_id": "9",
"cat_name": "builder"
}]
}
所以我总共有两个 json 数组:
{
"results": [{
"cat_id": 4,
"cat_name": "dentist"
}]
}
{
"results": [{
"cat_id": "8",
"cat_name": "dental hygienist"
}, {
"cat_id": "5",
"cat_name": "stocktaker"
},
{
"cat_id": "9",
"cat_name": "builder"
}
]
}
但是我怎样才能把它们合二为一:
{
"results": [{
"cat_id": 4,
"cat_name": "dentist"
}, {
"cat_id": "8",
"cat_name": "dental hygienist"
}, {
"cat_id": "5",
"cat_name": "stocktaker"
},
{
"cat_id": "9",
"cat_name": "builder"
}
]
}
我试过类似的东西:
$jsonArray = array();
foreach (array_combine( $array1, $array2 ) as $name => $value) {
$jsonArray[] = array('cat_id' => $name, 'cat_name' => $value);
}
echo $json = json_encode($jsonArray);
但仍然无法正常工作。
不是array_combine
您需要合并两个数组
$array1 = json_decode($array1, true);
$array2 = json_decode($array2, true);
$final_array = array_merge($array1['results'], $array2['results']);
我猜你想改用 array_merge_recursive
。
echo json_encode(array_merge_recursive($array1, $array2));
假设您已经有了数组,您可以这样做:
$res1 = [
"results"=> [[
"cat_id"=> 4,
"cat_name"=> "dentist"
]]
];
$res2 = [
"results"=> [[
"cat_id"=> "8",
"cat_name"=> "dental hygienist"
], [
"cat_id"=> "5",
"cat_name"=> "stocktaker"
],
[
"cat_id"=> "9",
"cat_name"=> "builder"
]
]
];
$combinedArray = array_merge_recursive($res1, $res2);
$jsonCombinedArray = json_encode($combinedArray);
这个结果变成了
{
"results": [
{"cat_id":4,"cat_name":"dentist"},
{"cat_id":"8","cat_name":"dental hygienist"},
{"cat_id":"5","cat_name":"stocktaker"},
{"cat_id":"9","cat_name":"builder"}
]
}
我试过 json_combine
和 array_merge
之类的方法,但我不知道该怎么做。
$query2 = "SELECT DISTINCT cat_id,cat_name FROM review WHERE user_id = ? AND public_or_private = 0";
$stmt2 = $con->prepare($query2) or die(mysqli_error($con));
$stmt2->bind_param('i', $user_id) or die ("MySQLi-stmt binding failed ".$stmt2->error);
$stmt2->execute() or die ("MySQLi-stmt execute failed ".$stmt2->error);
$result2 = $stmt2->get_result();
$array1 = array();
while ($row = mysqli_fetch_assoc($result2)) {
$array1['results'][] = $row;
}
echo json_encode($array1);
json_encode
给我:
{"results":[{"cat_id":4,"cat_name":"dentist"}]}
在我的代码中进一步向下:
$query3 = "SELECT DISTINCT cat_id,cat_name FROM review WHERE public_or_private = 2";
$result3 = mysqli_query($con,$query3);
$array2 = array();
while($row = mysqli_fetch_assoc($result3)) {
$array2['results'][] = $row;
}
echo json_encode($array2);
json_encode
给我:
{
"results": [{
"cat_id": "8",
"cat_name": "dental hygienist"
}, {
"cat_id": "5",
"cat_name": "stocktaker"
}, {
"cat_id": "9",
"cat_name": "builder"
}]
}
所以我总共有两个 json 数组:
{
"results": [{
"cat_id": 4,
"cat_name": "dentist"
}]
}
{
"results": [{
"cat_id": "8",
"cat_name": "dental hygienist"
}, {
"cat_id": "5",
"cat_name": "stocktaker"
},
{
"cat_id": "9",
"cat_name": "builder"
}
]
}
但是我怎样才能把它们合二为一:
{
"results": [{
"cat_id": 4,
"cat_name": "dentist"
}, {
"cat_id": "8",
"cat_name": "dental hygienist"
}, {
"cat_id": "5",
"cat_name": "stocktaker"
},
{
"cat_id": "9",
"cat_name": "builder"
}
]
}
我试过类似的东西:
$jsonArray = array();
foreach (array_combine( $array1, $array2 ) as $name => $value) {
$jsonArray[] = array('cat_id' => $name, 'cat_name' => $value);
}
echo $json = json_encode($jsonArray);
但仍然无法正常工作。
不是array_combine
您需要合并两个数组
$array1 = json_decode($array1, true);
$array2 = json_decode($array2, true);
$final_array = array_merge($array1['results'], $array2['results']);
我猜你想改用 array_merge_recursive
。
echo json_encode(array_merge_recursive($array1, $array2));
假设您已经有了数组,您可以这样做:
$res1 = [
"results"=> [[
"cat_id"=> 4,
"cat_name"=> "dentist"
]]
];
$res2 = [
"results"=> [[
"cat_id"=> "8",
"cat_name"=> "dental hygienist"
], [
"cat_id"=> "5",
"cat_name"=> "stocktaker"
],
[
"cat_id"=> "9",
"cat_name"=> "builder"
]
]
];
$combinedArray = array_merge_recursive($res1, $res2);
$jsonCombinedArray = json_encode($combinedArray);
这个结果变成了
{
"results": [
{"cat_id":4,"cat_name":"dentist"},
{"cat_id":"8","cat_name":"dental hygienist"},
{"cat_id":"5","cat_name":"stocktaker"},
{"cat_id":"9","cat_name":"builder"}
]
}