从Json数组中删除元素

时间:2014-10-11 15:12:29

标签: php arrays json

我将数组内容以json数组的形式存储到数据库中。

格式:[" 1"," 2"," 3"]

现在我从数据库中检索了值并试图删除第三个元素" 2"从相同的结构。

我的代码是

$numbers= json_decode($numbers_db,true); //json decode numbers array got from DB
if (($key = array_search(2, $numbers)) !== false) {
                    unset($numbers[$key]);
                 }
                 $numbers_final = json_encode($numbers);

现在我预计$ numbers_final的格式为:["1","3"]

但结果是{"0":"1","2":"3"}

2 个答案:

答案 0 :(得分:2)

问题是当你unset()一个元素时,索引保持不变。在这种情况下,索引1不再存在,因此数组将转换为对象。

要强制数组按顺序重新编制索引,你可以这样做:

$numbers_db  = '["1", "2", "3"]';

echo $numbers_db;

$numbers= json_decode($numbers_db,true); //json decode numbers ar

if (($key = array_search(2, $numbers)) !== false) {
    unset($numbers[$key]);
    $numbers = array_values($numbers);
}
$numbers_final = json_encode($numbers);

echo $numbers_final;                 

答案 1 :(得分:1)

改用array_splice

array_splice($array,$offset,$length)

这将从$ offset元素$ length元素中删除 并重新编制索引