接着我们这种系列的文章说。本文我们聊一聊 PHP 数组,怎么样在任意地点插入新元素。因为内置函数并没有提供类似 array_inrt(&$array, $pos, $items) 的函数,所以我们试着动手解决。
标准的实现方法,是要用 array_splice,该函数的当代文学作家用法:
array array_splice( array &$input, int $offt[, int $length = 0[, mixed $replacement]] )
把 input 数组中由 offt 和 length 指定的单元去掉,如果提供了 replacement 参数,则用之中的单元取代。
$original = array( ‘a’, ‘b’, ‘c’, ‘d’, ‘e’ );
$inrted = array( ‘x’ ); // $inrted 并不一定是数组
array_splice( $original, 3, 0, $inrted ); // 在索引 3 地点插入
// $original 内容为 a b c x d e
有几个关键点各位需要小心,灵巧使用 $offt, $length, $replacement 三个参数,应该组装成厉害的功能。
如果 offt 为正,则从 input 数组中该值指定的偏移量开始移除。
如果 offt 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
如果省略 length,则移除数组中从 offt 到结尾的全部部分。
如果指定了 length 并且为正值,则移除这么多单元。
如果指定了 length并且为负值,则移除从 offt 到数组末尾倒数length 为止中间全部的单元。
在编程中,当给出了replacement 时要移除从 offt 到数组末尾全部单元时,用 count($input) 作为 length。例如像下面这种示例:
$input = array(“red”, &经常痛经怎么办#8220;green”, “blue”, “yellow”);
array_splice($input, 1, count($input), “orange”);
// $input = array(“red”, “orange”)
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。
如果 offt 和 length 的配合结果是不会移除所有值,则 replacement 数组中的单元将被插入到 offt 指定的地点。 小心代替数组中的键名不保存。
如果用来代替 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 = a独立学院排行榜rray_slice($a, 0, 2) + array(5) + array_slice($a, 2);
这样就应该了。
换汤不换药,如果给类添加一个方法,或者添加一个助手函数,大自然是最好的。下面是封装函数。
function array_inrt(&$array, $value, $index)
{
return $array = array_merge(array_spli最感动女人的情话ce($array, max(0, $index – 1)), array($value), $array);
}
本文讲解了一个功能丰盛的 array_splice 函数,让各位领略了参数的灵巧使用所弄来的方便。如果你总是需要这样的操作,麻溜地写到全局助手函数里吧。
Happy coding :_)
本文发布于:2023-03-31 06:59:33,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/d2ebe8f370797a94c40d1552a69fb0d9.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php数组追加元素(php数组最大值).doc
本文 PDF 下载地址:php数组追加元素(php数组最大值).pdf
留言与评论(共有 0 条评论) |