从 PDO::FETCH_ASSOC 添加数组到 json 编码数组
add array to json encoded array from PDO::FETCH_ASSOC
我正在将所有产品类别从 db 和编码返回到 json,这工作正常,只是我想修改返回的 image_url 的值并添加 http:/ / 在后面,因为它不在数据库值中。
$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()
它会return你的结果作为数组,你可以用两行实现你想要的
<?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));
?>
我正在将所有产品类别从 db 和编码返回到 json,这工作正常,只是我想修改返回的 image_url 的值并添加 http:/ / 在后面,因为它不在数据库值中。
$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()
它会return你的结果作为数组,你可以用两行实现你想要的
<?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));
?>