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

时间:2012-01-27 11:27:14

标签: php

我的数组看起来像

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

我想这样做:

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

有人可以帮助我吗?

非常感谢

4 个答案:

答案 0 :(得分:5)

使用array_filter

点击demo

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

答案 1 :(得分:4)

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

$array = array_filter($array);

答案 2 :(得分:1)

我不认为上面的答案会给出正确的字段顺序,因为它被问到了。如果您只想从数组中删除某些字段并保持按键顺序不变,则可以使用

执行此操作

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

但是如果你想得到新的按键顺序,所以没有“漏洞”,在上面的例子中,当按键2和3未设置时将按键4设置为按键2,你必须使用

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)知道不应该对数组进行排序,以防万一在最后添加$arr=array_values($arr); #EDITED

ksort()的PHP引用位于link

答案 3 :(得分:0)

您可以使用此解决方法。

在某处定义此功能:

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

我觉得这不是最有效的方法,但它运作良好。