我使用json _encode()
传递数据库值。以下是查询,一切正常。
但是当我向数组添加一个额外的数据时,我会在输出数据前面得到一个数字。
$sql = "SELECT item, price, availability
FROM items
WHERE category = :category
ORDER BY item DESC";
$stmt= $connect->prepare($sql);
$stmt->execute(array(':category'=>"fruits"));
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rslt as $val){
$data[] = $val;
}
$data['additional'] = $someAdditionalData;
echo json_encode($data);
当前输出:
{"0":{"item":"lychee"},"1":{"item":"ornage"},"2": "item":"apple"},"additional":ABC}
我的问题是,如何在没有索引号的情况下获得输出(如下所示)
[{"item":"lychee"},{"item":"ornage"},{"item":"apple"},{"additional":"ABC"}]
答案 0 :(得分:2)
当任何数组键不是数字或数组缺少索引时,PHP选择将数组序列化为对象。
您可以在现有阵列上推送另一个元素:
$data[] = ['additional' => $someAdditionalData];
或者,或许更好,选择不同的结构:
$items = [];
foreach ($rslt as $val){
$items[] = $val;
}
echo json_encode([
'items' => $items,
'additional' => $someAdditionalData;
]);
在JavaScript中,您可以使用data.items
访问这些项目,并通过data.additional
访问其他数据。
答案 1 :(得分:1)
索引编号是自动分配的,因为您已经为自己分配了一个名为“附加”的索引。 在您的代码中尝试更改
=countif(C:C,9)
到
c
答案 2 :(得分:0)
使用array_values()
解决您的问题:
$arr['additional'] = array_values($arr['additional']);
$arr = json_encode($arr);
为什么呢?因为您在不重新排序的情况下取消了数组键的设置。所以在此之后,保持JSON的唯一方法也是编码键。但是,在应用array_values()
后,您将获得有序键(从0
开始),可以正确编码而不包括键。