将相似的值放入php Json中的数组内

问题描述 投票:0回答:1

我有从数据库获取数据的php代码。现在需要将其转换为Json Object。但我想得到这样的输出

{
    "message": "true",
    "data": [
        {
            "c_id": "1",
            "c_titleId": "1",
            "cd_order": "1",
            "cd_img": "/imgs/cp1/cp01.png"
        },
        {
            "c_id": "2",
            "c_titleId": "2",
            "cd_order": "2",
            "cd_img": [
                "/imgs/cp3/cp301.PNG", "/imgs/cp3/cp303.PNG"]
        }

    ]
}

我有以下代码

function getalldata() {
    $sql = "SELECT chapters.c_id, chapters.c_titleId, chapterdetails.cd_order,
        chapterdetails.cd_img ,  chapterdetails.cd_desc
       from chapters
        INNER JOIN chapterdetails ON
        chapters.c_id = chapterdetails.c_id";
    $result = $this->conn->query($sql);
    return $result;        
}


All the connections related code is seperated. this is the code which will be accessed from the app.

$result = $getdata->getalldata();
$num = mysqli_num_rows($result);

    if ($num != 0) {
        http_response_code(200);
        $outp = $result->fetch_all(MYSQLI_ASSOC);
        echo json_encode(array("message" => "true","data" => $outp));
        // echo json_encode();

    } else {
        http_response_code(200);
        echo json_encode(
                array("message" => "false",
                    "desc" => "No details available")
        );
    }

所以,我想做的是,如果输入了多个img网址,则应将其作为数组发送给相关的chapeter。

php mysql json encode
1个回答
0
投票

为了使您更接近解决方案,您要做的第一件事是它在查询中创建了一些别名,因此这可以帮助您构建JSON数据,例如:

PS:在此示例中,未处理每行的多张图像

SELECT chapters.c_id as c_id ,
chapters.c_titleId as c_titleId, 
chapterdetails.cd_order as cd_order,
chapterdetails.cd_img as cd_img,
from chapters
INNER JOIN chapterdetails ON
chapters.c_id = chapterdetails.c_id

此查询将返回一个行数组,如:

//$data
array(2) {
  [0]=>
  array(4) {
    ["c_id"]=>
    string(1) "1"
    ["c_titleId"]=>
    string(1) "1"
    ["cd_order"]=>
    string(1) "1"
    ["cd_img"]=>
    string(18) "/imgs/cp1/cp01.png"
  }
  [1]=>
  array(4) {
    ["c_id"]=>
    string(1) "2"
    ["c_titleId"]=>
    string(1) "2"
    ["cd_order"]=>
    string(1) "2"
    ["cd_img"]=>
      string(19) "/imgs/cp3/cp301.PNG"
    }
  }
}

然后,

$result = ["message" => true];
$result["data"] = $data;
$result_json = json_encode($result);
var_dump($result_json);


{
   "message":true,
   "data":[
      {
         "c_id":"1",
         "c_titleId":"1",
         "cd_order":"1",
         "cd_img":"\/imgs\/cp1\/cp01.png"
      },
      {
         "c_id":"2",
         "c_titleId":"2",
         "cd_order":"2",
         "cd_img":"\/imgs\/cp3\/cp301.PNG"
      }
   ]
}

如果要每行管理多张图像,请更新并说明更多数据存储方式。

© www.soinside.com 2019 - 2024. All rights reserved.