PHP>如何在使用json_encode时跳过元素

时间:2015-11-03 14:11:08

标签: php arrays json

我需要以JSON格式向客户端发送数据。

到目前为止,它对json_encode的效果很好,如下所示:

$sql = "SELECT `card`.`CardID`,`card`.`Text`,... WHERE (`card`.`CardID`= :ItemId)";

$stmt = $dbh->prepare($sql);
$stmt->bindParam(':ItemId', $itemid);   
$stmt->execute();

while ($row = $stmt->fetchObject()) {
    $posts[]=$row;
}

...
...

$res["rows"] = $posts;
$res["maptel"] = $maptelindicator;

echo json_encode($res,JSON_UNESCAPED_UNICODE); 

但现在我遇到了问题。我在数据库中有一个新的字段(Videofiles),它已经是JSON格式化的 - 存储为SDK函数的输出。如果我再次编码这个JSON编码字段,我会得到客户端无法读取的数据..

我如何json_encode所有其他数据,但跳过这个特定字段,Videofiles?

以下是使用print_r的示例数据结构的输出:

Array
(
    [rows] => Array
        (
            [0] => stdClass Object
                (
                    [Name] => Company13
                    [CID] => 26
                    [CardID] => 26-000002
                    [Text] => Kleopatra Deluxe Hotel reservations
                    [ImageLink] => 
                    [VideoFiles] => [{"quality":"mobile","type":"video/mp4","width":480,"height":270....}]
                    [ClickDate] => 2015-11-03
                )

        )

    [maptel] => 0
)

...谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用json_decode解码已编码的字段,然后将结果添加到$res数组中。

答案 1 :(得分:0)

  

最好的方法是在SQL中删除这一部分!

但是如果你想在php 中删除它会花费你的费用,你可以在这种情况下使用unset;

foreach ($posts as $post){
    unset($posts['VideoFiles']);
}

$res["rows"] = $posts;
$res["maptel"] = $maptelindicator;

echo json_encode($res,JSON_UNESCAPED_UNICODE);