[英]How merge two array with unique values in multi while loop php
有人可以幫我解決這個數組問題嗎? 我正在使用 MySQL 數據庫,我試圖在兩個 while 循環中從兩個表中獲取值。 我想合並結果,如下所述。 我嘗試使用以下代碼實現此目的,但是,這對我不起作用。
$jsonObj= array();
$query="SELECT * FROM `tbl_news` ORDER BY `news_type` desc limit 50, 100";
$sql0 = mysqli_query($mysqli,$query) or die(mysqli_error($mysqli));
while($data = mysqli_fetch_assoc($sql0))
{
$nid = $data['id'];
$cquery = "select id from tbl_comments where news_id = '$nid'";
$cresult = mysqli_query($mysqli,$cquery);
$totalc = mysqli_num_rows($cresult);
$row['id'] = $data['id'];
$row['news_type'] = $data['news_type'];
$row['news_heading'] = stripslashes($data['news_heading']);
//Comments
$qry2="SELECT * FROM tbl_comments WHERE tbl_comments.`news_id`='".$nid."'";
$result2=mysqli_query($mysqli,$qry2);
$row2['totalc'] = $result2->num_rows;
if($result2->num_rows > 0)
{
while ($row_comments=mysqli_fetch_array($result2)) {
$row2['comment_id'] = $row_comments['id'];
$row2['news_id'] = $row_comments['news_id'];
$row2['user_name'] = $row_comments['user_name'];
$row2['user_email'] = $row_comments['user_email'];
$row2['comment_text'] = $row_comments['comment_text'];
$row['user_comments'][]= $row2;
}
}
else
{
$row2 = array();
}
array_push($jsonObj,$row);
}
$set['SET_News'] = $jsonObj;
header( 'Content-Type: application/json; charset=utf-8' );
echo $val= str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
die();
我期待這個結果
"Set_News": [{
{
"id": "104",
"news_type": "any",
"news_heading": "Mews heade here 1",
"user_comments": [{
"totalc": 2,
"comment_id": "17",
"news_id": "104",
"user_name": "abhijeet",
"user_email": "XXX@gmail.com",
"comment_text": "nice"
},
{
"totalc": 2,
"comment_id": "18",
"news_id": "104",
"user_name": "abhijeet",
"user_email": "XXX@gmail.com",
"comment_text": "nice"
}
],
{
"id": "622",
"news_type": "any",
"news_heading": "News head here2",
},
}
}];
更新答案:
我想我明白你現在想做什么。 您正在嘗試在 $row 中創建一個子數組“greet”,其中包含與該新聞文章關聯的所有壁紙。 要獲得您想要的結果,您不必合並 row2 和 row arrays,您只需將 row2 作為 row1 的一部分
//...
$row2= array();
while($data2 = mysqli_fetch_array($result2))
{
array_push($row2,$data2);
}
if (count($row2) > 0) {
$row["greet"] = $row2;
}
//...
此代碼應生成您發布的 json。
合並 arrays 會創建類似這樣的東西:
"id": "30",
"news_type": "image",
"news_heading": "News title",
"news_weburl": "#",
"total_share": "0",
"cat_id": "112",
"category_name": "tech",
"wid": "11",
"wall_title": "tech image wallpaper1",
"wall_image": "image1.jpg",
並且只能用一張圖片完成
如果您希望它看起來像上面那樣,如果只有一張圖像,您可以像這樣更改代碼
if (count($images) == 1) {
$row["wid"] = $row2[0]["wid"];
$row["wall_title"] = $row2[0]["wall_title"];
$row["wall_image"] = $row2[0]["wall_image"];
} elseif (count($row2) > 1) {
$row["greet"] = $row2;
}
//...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.