PHP:在unset()之后对数组重新排序

PHP:在unset()之后对数组重新排序,php,arrays,Php,Arrays,涉及两个功能 搜索给定字符串的数组项 如果未找到字符串,则取消设置()数组项 second是带有字符“e”的数组项。如果其未设置,$array[1]将保留为空: $array[0] = "first" $array[1] = "" $array[2] = "third" $array[3] = "fourth" 我希望将$array[1]从数组中删除(如数组_shift()),以便第三个取代第二个,第四个取代第三个: $array[0] = "first" $array[

涉及两个功能

  • 搜索给定字符串的数组项
  • 如果未找到字符串,则取消设置()数组项

  • second
    是带有字符“e”的数组项。如果其
    未设置
    $array[1]
    将保留为空:

    $array[0] = "first"  
    $array[1] = ""  
    $array[2] = "third"  
    $array[3] = "fourth"
    
    我希望将
    $array[1]
    从数组中删除(如
    数组_shift()
    ),以便
    第三个
    取代
    第二个
    第四个
    取代
    第三个

    $array[0] = "first"    
    $array[1] = "third"  
    $array[2] = "fourth"
    

    我认为我找到的最佳解决方案是:

    解决方案1 如果只想删除一个元素:

      array_splice($array,1,1); // all keys will be reindexed from 0
    
    其中第二个和第三个参数是偏移量(关键点)和长度(要删除的数量)

    解决方案2 删除多个键的最佳方法:用于从数组中删除所有空字符串和Falsy值,然后重新排序:

    array_splice(array_filter($array), 0, 0);
    

    +1,这是最简单的,尽管如果你想自动完成,可以使用
    SPLDoublyLinkedList
    。非常好,完美你是国王,在json_解码而不是unset而不是json_编码后,它会因为缺少删除的元素而破坏我的json树。现在问题解决了。谢谢。你也应该使用数组过滤器和数组值。回答得好。。。对于多维+会话
      array_splice($array,1,1); // all keys will be reindexed from 0
    
    array_splice(array_filter($array), 0, 0);