如何删除数组元素,然后重新索引数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除数组元素,然后重新索引数组?相关的知识,希望对你有一定的参考价值。

我有一个数组的问题。我有一个数组,我想修改如下。我想通过索引删除其中的元素,然后重新索引数组。这可能吗?

$foo = array(

    'whatever', // [0]
    'foo', // [1]
    'bar' // [2]

);

$foo2 = array(

    'foo', // [0], before [1]
    'bar' // [1], before [2]

);
答案
unset($foo[0]); // remove item at index 0
$foo2 = array_values($foo); // 'reindex' array
另一答案
array_splice($array, 0, 1);

http:/php.netmanualenfunction.array-splice.php)。

另一答案

你最好用 array_shift(). 这将返回数组中的第一个元素,将其从数组中删除并重新索引数组。所有这些都是一个高效的方法。

另一答案
array_splice($array, array_search(array_value, $array), 1);
另一答案
Unset($array[0]); 

Sort($array); 

我不知道为什么这个方法会被降权,但是如果有人尝试过,你会发现它是有效的。在数组上使用排序可以重新分配数组的键。唯一的缺点是它对值进行了排序。由于键值显然会被重新分配,所以即使是用 array_values这与值是否被排序无关。

另一答案

试试用。

$foo2 = array_slice($foo, 1);
另一答案

除了xzyfer的答案之外

职能

function custom_unset(&$array=array(), $key=0) 
    if(isset($array[$key]))

        // remove item at index
        unset($array[$key]);

        // 'reindex' array
        $array = array_values($array);

        //alternatively
        //$array = array_merge($array); 

    
    return $array;

使用

$my_array=array(
    0=>'test0', 
    1=>'test1', 
    2=>'test2'
);

custom_unset($my_array, 1);

结果

 array(2) 
    [0]=>
    string(5) "test0"
    [1]=>
    string(5) "test2"
  
另一答案

如果您使用 array_merge这将重新索引键。手册中写道:"在输入数组中,数字键的值将在结果数组中从零开始用增量键重新编号。

输入数组中的数字键值将被重新编号,结果数组中的键值将从零开始递增。

http:/php.netmanualenfunction.array-merge.php)。

这是我找到原始答案的地方。

http:/board.phpbuilder.comshowthread.php?10299961-Reset-index-onarray-after-unset()

以上是关于如何删除数组元素,然后重新索引数组?的主要内容,如果未能解决你的问题,请参考以下文章

PHP删除数组的第一个索引并重新索引

如何重新索引多维数组的所有子数组元素?

PHP |通过重新排序从数组中删除元素?

如何在 JQuery 中添加和删除数组而不重新索引数组键

PHP |通过重新排序从数组中删除元素?

重新排列数组索引 Eloquent Laravel