首页 > 解决方案 > 在单循环数组中使用php获取json格式所有其他数组在父循环中设置

问题描述

我想要 php 中的这种 json 格式,但我无法做到这一点。

 {
    "couresList_PVP": [
        {
            "pvp_ad_chptr_id": "9",
            "pvp_ad_chptr_un_id": "1526249608",
            "pvp_ad_chptr_name": "54654",

    "offer_chapter_PVP": [
        {
            "pvp_ad_chptr_offr_id": "4",
            "pvp_ad_chptr_un_id": "1526249608",
            "pvp_ad_chptr_offr_un_id": "Offer-1526249608"
        },
        {
            "pvp_ad_chptr_offr_id": "3",
            "pvp_ad_chptr_un_id": "1526249608",
            "pvp_ad_chptr_offr_un_id": "Offer-1526249608"
        }]
},]
}

我的 PHP 代码在这里。我将如何做到这一点?我将得到 JSON 响应,但不同的数组不在一个数组中,而数组在数组中。

$sql = mysqli_query($this->db,"SELECT * from `pvp_admin_chptr_list` order by pvp_ad_chptr_id desc");

if(mysqli_num_rows($sql) > 0){

    while($res=mysqli_fetch_assoc($sql)){

        $url=$this->site_url.'images_console/chapter_banner_console/'.$res['pvp_ad_chptr_banner'];

        $video=$this->site_url.'video_console/'.$res['pvp_ad_chptr_video_name'];

        $images=array('pvp_ad_chptr_banner'=>$url,'pvp_ad_chptr_video_name'=>$video);

        $data['couresList_PVP'][]=array_merge($res,$images);

        $ofr_sql = mysqli_query($this->db,"SELECT * from `pvp_admin_chptr_offers` where pvp_ad_chptr_un_id='$res[pvp_ad_chptr_un_id]' order by pvp_ad_chptr_offr_id desc");

        if(mysqli_num_rows($ofr_sql) > 0){

            while($ofr_res=mysqli_fetch_assoc($ofr_sql)){

                $data['offer_chapter_PVP'][]=$ofr_res;

            }
        }else{

            $data['offer_chapter_PVP'][]=array("status"=>"No Data FOund"); 

        }
    }
    //$data2=array_merge($data['couresList_PVP'],$data['offer_chapter_PVP']);
    //$data[]=array_push( $data['couresList_PVP'],$data['offer_chapter_PVP']);
    //$data=
    // If success everything is good send header as "OK" and user details

    $this->response($this->json($data), 200);
}

标签: phparraysjson

解决方案


您可以使用数组的组合,然后将其编码为 json。请检查下面的代码。

$response = array();
$responseObj = array();
$courseList = array();
$courseArr = array();
while($res=mysqli_fetch_assoc($sql)){
    $courseList['pvp_ad_chptr_id'] = $res['id'];
    $courseList['pvp_ad_chptr_un_id'] = $res['pvp_ad_chptr_un_id'];
    $courseList['pvp_ad_chptr_name'] = $res['pvp_ad_chptr_name'];

    $ofr_sql = mysqli_query($this->db,"SELECT * from `pvp_admin_chptr_offers` where pvp_ad_chptr_un_id='$res[pvp_ad_chptr_un_id]' order by pvp_ad_chptr_offr_id desc");

    if(mysqli_num_rows($ofr_sql) > 0){
        while($ofr_res=mysqli_fetch_assoc($ofr_sql)){
            $courseList['offer_chapter_PVP'][]=$ofr_res;
        }
    }else{
        $courseList[$i]['offer_chapter_PVP'][]=array("status"=>"No Data FOund");
    }
    $courseArr[] = $courseList;
}
$response['couresList_PVP'] = $courseArr;
$responseObj = $response;
echo '<pre>';
echo json_encode($responseObj);
echo '</pre>';

推荐阅读