如何删除元素并移动数组中的$key


How to delete element and also shift the $key in array

我有一个看起来像的数组

Array
(
    [0] => 1213059
    [1] => 1213063
    [2] => 
    [3] => 
    [4] => 1213072
)

我想做如下:

Array
(
    [0] => 1213059
    [1] => 1213063
    [2] => 1213072
)

有人能帮我吗?

非常感谢

使用array_filter

点击此处查看演示:

array_values(array_filter($your_array));以数字形式保存您的密钥。

array_filter将删除所有评估为false的元素:

$array = array_filter($array);

我不认为上面的答案给出了正确的字段顺序。如果你只想从数组中删除一些字段,并保持键的顺序不变,你可以用来完成

array_filter($arr) or with unset($arr[$i])

但如果你想获得新的密钥顺序,所以没有"洞",在上面的例子中,要将密钥4设置为密钥2,因为密钥2和3是未设置的,你必须使用

ksort($arr)

下面是一个完整的例子:

$arr=array(1,1,3,2,0);
print_r($arr);
echo '<br>';
unset($arr[2]);
ksort($arr);
print_r($arr);
$arr=array_values($arr);#EDITED

ksort($arr)知道不按应该的方式对数组进行排序,所以为了以防万一,在#EDITED 末尾添加$arr=array_values($arr);

链接上有ksort()的PHP参考。

您可以使用此解决方法。

在某处定义此功能:

function removeArrElement($inArr, $elementNr) {
    for ($i = $elementNr; $i < count($inArr) - 1; $i++) {
        $inArr[$i] = $inArr[$i + 1];
    }
    unset($inArr[count($inArr) - 1]);
    return $inArr;
}

然后,当您想从$yourArray中删除特定元素时,请执行以下操作:

$yourArray = removeArrElement($yourArray, $nthElement);

我觉得这不是最有效的方法,但效果很好。