我将数组内容以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"}
答案 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元素中删除 并重新编制索引