PHP 取消设置 returns 我的 json 带有 int 索引的数组

PHP unset returns my json array with int indexes

我的 json 索引删除器有问题,到目前为止我试过了

$cars = json_decode($json_user , true);
foreach ($cars as $key => $value) {
    if (in_array('BH', $value)) {
        unset($cars[$key]);
    }
}
echo $cars = json_encode($cars);

含JSON内容

[{"code":"AB"},{"code":"BC"},{"code":"CD"}]

当使用上面的脚本删除包含 BC 的索引时 returns 我这个

{"0":{"code":"AB"},"2":{"code":"CD"}}

而不是这个

[{"code":"AB"},{"code":"CD"}]

JSON 格式基于 JavaScript 语法,JavaScript 数组不能有稀疏键。尝试删除当前键并重新索引数组:

echo $cars = json_encode(array_values($cars));

它按预期工作。 PHP 数组是关联映射。删除一个键不会影响数组的其他键。

在将 $cars 编码为 JSON 之前使用 array_values() 重建索引。