引言接着我们这个系列的文章说 。本文我们聊一聊 PHP 数组,如何在任意位置插入新元素 。因为内置函数并没有提供类似 array_insert(&$array, $pos, $items) 的函数,所以我们试着动手解决 。
![php内置设计模式接口方法 php数组添加元素的方法](http://img.sichuanlong.com/231109/054K31W8-0.png)
文章插图
学习时间标准的实现方法,是要用 array_splice , 该函数的用法:
array array_splice( array &$input, int $offset[, int $length = 0[, mixed $replacement]] )
把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用其中的单元取代 。下面是举例说明:
$original = array( 'a', 'b', 'c', 'd', 'e' );$inserted = array( 'x' ); // $inserted 并不必须是数组array_splice( $original, 3, 0, $inserted ); // 在索引 3 位置插入// $original 内容为 a b c x d e
有几个关键点大家需要注意 , 灵活运用 $offset, $length, $replacement 三个参数 , 可以组装成强大的功能 。对于偏移位置 $offset:
- 如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除 。
- 如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除 。
- 如果省略 length,则移除数组中从 offset 到结尾的所有部分 。
- 如果指定了 length 并且为正值,则移除这么多单元 。
- 如果指定了 length并且为负值,则移除从 offset 到数组末尾倒数length 为止中间所有的单元 。
$input = array("red", "green", "blue", "yellow");array_splice($input, 1, count($input), "orange");// $input = array("red", "orange")
特别需要注意的是 $replacement 参数:- 如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代 。
- 如果 offset 和 length 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置 。注意替换数组中的键名不保留 。
- 如果用来替换 replacement 只有一个单元 , 那么不需要给它加上array() , 除非该单元本身就是一个数组、一个对象或者 NULL 。
$a = array(1, 2, 3, 4);$b = array_merge(array_slice($a, 0, 2), array(5), array_slice($a, 2));// $b = array(1, 2, 5, 3, 4)
使用 array_slice 函数对原数组切片,一分为二,然后使用 array_merge 拼接3个部分 。完美!上面的代码,在使用 array_merge 后悔丢失原数组的索引关系 。如果要保留,使用 + 连接:
$b = array_slice($a, 0, 2) + array(5) + array_slice($a, 2);
这样就可以了 。换汤不换药,如果给类添加一个方法 , 或者添加一个助手函数,自然是极好的 。下面是封装函数 。
function array_insert(&$array, $value, $index){return $array = array_merge(array_splice($array, max(0, $index - 1)), array($value), $array);}
写在最后本文介绍了一个功能丰富的 array_splice 函数,让大家领略了参数的灵活运用所带来的便捷 。如果你经常需要这样的操作,麻溜地写到全局助手函数里吧 。Happy coding :_)
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 管理计算机域的内置账户设置 win10用户名怎么改回来
- 手机php文件视频的打开方式 php格式用什么打开的
- php时间戳转换中国标准时间 php时间戳转时间
- php常见的攻击方式 php反射机制与应用
- 简单运行php的技巧 php是什么文件怎么打开
- php获取当前时间戳的办法 php时间转换时间戳
- 关于graphpad作图教程 chatgpt可以作图么
- php编程语言了解 php是前端还是后端开发的
- 网页设计制作网站的费用 制作一个php网站多少钱
- 笔记本内置网卡的作用讲解 笔记本电脑内置无线网卡有什么用