如何删除数组元素,然后重新索引数组?
我有一些arrays的麻烦。 我有一个数组,我想修改如下。 我想通过索引删除它的元素(元素),然后重新索引数组。 可能吗?
$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);
你最好使用array_shift()
。 这将返回数组的第一个元素,将其从数组中删除,并重新索引数组。 所有在一个有效的方法。
array_splice($array, array_search(array_value,$array),1);
试试:
$foo2 = array_slice($foo, 1);
Unset($array[0]); Sort($array);
我不知道为什么这是被低估的,但如果有人试图尝试,你会注意到它的工作原理。 在数组上使用sorting重新分配数组的键。 唯一的缺点是它对价值进行分类。 由于密钥显然将被重新分配,即使对于array_values
,值也没有被sorting。
如果你使用array_merge
,这将重新索引键。 手册指出:
使用数字键input数组中的值将使用结果数组中从零开始的递增键进行重新编号。
http://php.net/manual/en/function.array-merge.php
这是我find原来的答案。
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset();
除了xzyfer的回答
function
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" }