(本文为个人学习过程的备忘录(踩坑记录)。内容持续更新)
为便于理解,我们定义如下 Array 对象:
// index
// 0 1 2 3 4 5
$arr = ['a', 'b', 'c', 'd', 'e', 'f'];
快速输出数组元素
当然可以用循环,但此处希望使用一行代码快速输出。
如果使用echo $arr
,会得到如下结果:
Array
正确方法是使用print_r()
函数对数组进行输出。输出语句为print_r($arr)
,结果如下:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
移除下标为 i 的元素(unset 法)
unset($arr[$i]);
这样做存在一个的问题:下标不变。
即,如果执行 unset($arr[2])
,$arr
内容变为['a', 'b', 'd', 'e', 'f']
,但其中d
元素的下标仍然为3,而不是2.
实验表明,此时$arr
中的内容实际为['a', 'b', NULL, 'd', 'e', 'f']
移除下标为 i 的元素(array splice 法)
array_splice($arr, $i, 1);
这样做可以做到移除指定元素,并且后面的元素下标相应减小。
该函数的参数表:
- 第一个参数:要操作的数组
- 第二个参数:要操作的下标
- 第三个参数:要删除的元素个数。即,如果第三个参数为2,则会从 $i 开始删除2个元素,并将后面的元素下标全减去2.
php manual 上对于该函数的原型如下:
array_splice(
array &$array,
int $offset,
?int $length = null,
mixed $replacement = []
): array
官方解释为:
Removes the elements designated by offset and length from the array array, and replaces them with the elements of the replacement array, if supplied.