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);