繁体   English   中英

将数组添加到PDO :: FETCH_ASSOC的json编码数组中

[英]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中循环结果,你可以只需fetchAlljson_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM