【问题标题】:Remove an element from Json array从 Json 数组中删除一个元素
【发布时间】:2014-10-11 15:12:28
【问题描述】:

我将数组内容以 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"}

【问题讨论】:

    标签: php arrays json


    【解决方案1】:

    问题是当你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;                 
    

    【讨论】:

      【解决方案2】:

      改用 array_splice

      array_splice($array,$offset,$length)
      

      这将从 $offset 元素中移除 $length 元素 并重新索引

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-15
        • 2023-03-22
        • 2017-05-17
        • 2013-05-27
        • 2018-11-16
        • 2013-10-04
        • 2017-02-25
        相关资源
        最近更新 更多