[英]add array to json encoded array from PDO::FETCH_ASSOC
我将所有产品类别从db和encoding返回到json,这很好,只是我想修改返回的image_url的值并在后面添加http://,因为它不在db值中。
$catlist = $pdo->prepare("SELECT * FROM `categories`");
$catlist->execute();
while($Categories = $catlist->fetch(PDO::FETCH_ASSOC)){
$newArr[] = $Categories;
}
echo json_encode(array_values($newArr));
返回的数据是:
[{"id":"81","name":"My Cate", "image_url":"ginger.gif" },{"id":"82","name":"Jane Doe", "image_url": "offf.gif"}]
所以我的目标是将http://x.com/连接到图像url对象数据。
您可以在将数组添加到数组之前修改数组:
$catlist = $pdo->prepare("SELECT * FROM `categories`");
$catlist->execute();
while($Categories = $catlist->fetch(PDO::FETCH_ASSOC)){
$Categories['image_url'] = "http://x.com/".$Categories['image_url']; //<- Add this line
$newArr[] = $Categories;
}
echo json_encode(array_values($newArr));
另一种选择是使用CONCAT
在查询中进行连接。 然后你不需要在PHP中循环结果,你可以只需fetchAll
, json_encode
和输出。
$sql = "SELECT id, name, CONCAT('http://', image_url) AS image_url FROM categories";
$catlist = $pdo->query($sql);
$categories = $catlist->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($categories);
你不需要使用循环和$newArray
如果使用fetchall()
它会将你的结果作为数组返回,你可以用两行实现你想要的
<?php
$catlist = $pdo->query("SELECT id,name,CONCAT('http://x.com/', image_url) AS imgURl FROM `categories`")->fetchall(PDO::FETCH_ASSOC);
echo json_encode(array_values($catlist));
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.