如何在不删除键的情况下删除数组元素


How to remove array elements without deleting the keys

我试图使用PHP的unset()内置函数从PHP脚本中删除一些数组元素
这是我试过的代码。

<?php
$my_array = array('.','..','one','two','three','four');
unset($my_array[1] , $my_array[0]);
echo '<pre>';
print_r($my_array);
echo '</pre>';
?>

然后我得到了这个输出。

阵列([2] =>一个[3] =>两个[4] =>三[5] =>四)

但这不是我所期望的。我想要这样的东西。

阵列([0]=>一[1] =>两个[2] =>三[3] =>四)

我怎样才能做到这一点?谢谢

是的,这是正确的行为,如果你想重置密钥,你可以使用array_values()

$my_array = array('.','..','one','two','three','four');
unset($my_array[1] , $my_array[0]);
$my_array = array_values($my_array);
unset($my_array[1] , $my_array[0]);
$my_array = array_values($my_array);

使用array_shift()函数从数组中移除第一个元素(红色),并返回被移除元素的值。我们可以得到你所期望的产量。

$a=array('.','..','one','two','three','four');
array_shift($a); //array('..','one','two','three','four');
array_shift($a); // array('one','two','three','four');

使用array_pop()函数可以删除数组的最后一个元素。我们可以得到你所期望的产量。

$a=array('.','..','one','two','three','four');
array_pop()($a); // array('.','..','one','two','three');
array_pop()($a); // array('.','..','one','two');

使用此函数,数组每次都从零开始索引。否则使用

$a= array('.','..','one','two','three','four');
unset($a[1] , $a[0]);
print_r(array_values(a));
$my_array = array('.','..','one','two','three','four');
unset($my_array[1] , $my_array[0]);
echo '<pre>';
print_r(array_values($my_array));
echo '</pre>';

实际上,您可以在另一个中找到问题的答案:
重新排列数组键php

正如人们所说的那样,array_values会为你带来好处。

$arr = array_values($arr);

使用array_values函数:

发件人http://php.net/manual/en/function.array-values.php