PHP + json:不包含空字段

时间:2015-11-04 20:05:46

标签: php json

下面的代码为我提供了一系列图片。我有15个字段:“img1”,“img2”,“img3”等等。

有时并非所有字段都有数据。我不想将它们包含在数组中。有没有办法将这些空字段保留在数组外?

<?php

include_once 'db_connect.php';

$i_id = $_POST["imovel_id"];

$sql = "SELECT * FROM iMoveis WHERE imovel_id='$i_id'";
$result = mysqli_query($mysqli, $sql);

$response = array();
$images = array();

while($row = mysqli_fetch_assoc($result)){

$images[] = array('images' => $row['img1']);
$images[] = array('images' => $row['img2']);
$images[] = array('images' => $row['img3']);
$images[] = array('images' => $row['img4']);
$images[] = array('images' => $row['img5']);
$images[] = array('images' => $row['img6']);
$images[] = array('images' => $row['img7']);
$images[] = array('images' => $row['img8']);
$images[] = array('images' => $row['img9']);
$images[] = array('images' => $row['img10']);
$images[] = array('images' => $row['img11']);
$images[] = array('images' => $row['img12']);
$images[] = array('images' => $row['img13']);
$images[] = array('images' => $row['img14']);
$images[] = array('images' => $row['img15']);

} 

  $response['posts'] = $images;

  echo json_encode($response, JSON_UNESCAPED_SLASHES);


?>

2 个答案:

答案 0 :(得分:3)

大图

您需要规范化数据,而不是使用名称为img15的字段。将图像放在另一个表中,并引用imovel_id。标准化数据可以使这更容易。

Hacky修复您的问题

使用您当前的表结构,您别无选择,只能执行大量if语句(或对数据进行循环)。像这样:

<?php

include_once 'db_connect.php';

$i_id = $_POST["imovel_id"];

$sql = "SELECT * FROM iMoveis WHERE imovel_id='$i_id'";
$result = mysqli_query($mysqli, $sql);

$response = array();
$images = array();

while($row = mysqli_fetch_assoc($result)){
    for ($index = 1; $index <= 15; $index++) { // loop over the columns
        if (!empty($row['img' . $index])) { // check for null or empty columns
            $images[] = array('images' => $row['img' . $index]); // add only if there is data
        }
    }
}
$response['posts'] = $images;
echo json_encode($response, JSON_UNESCAPED_SLASHES);
?>

答案 1 :(得分:1)

只需使用IF语句修改数组填充程序:

if($row['img1'])  $images[] = array('images' => $row['img1'];

所以如果有内容,它只会添加一个。