前言
那么我们在这个系列文章中说了。 在这篇文章中,我们讨论 PHP 字段,如何在任意位置插入新元素。 由于外部函数没有提供类似于array_insert(&$array, $pos, $items)的函数php打印数组,所以我们尝试手工解决。
学习时间
标准的实现方法是使用array_splice,该函数的用法:
array array_splice( array &$input, int $offset[, int $length = 0[, mixed $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:
对于替换的宽度$length:
在编程中,如果要在给出替换时删除从偏移量到链表末尾的所有单位,请使用 count($input) 作为长度。 例如下面这个例子:
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input = array("red", "orange")
注意 $replacement 参数非常重要:
自己造轮子
上一节的解决方案非常标准。 有的朋友还是忍不住造轮子。 “条条大道通罗马”,满足需求的方式肯定不止一种。 这是另一种形式:
$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将三部分拼接起来。 完美的!
里面的代码很遗憾在使用array_merge时丢失了原来链表的索引关系。 如果你想保留它,请使用 + join:
$b = array_slice($a, 0, 2) + array(5) + array_slice($a, 2);
就是这样。
换汤不药php打印数组,如果在类中添加一个方法,或者添加一个辅助函数,自然是极好的。 下面是包装函数。
function array_insert(&$array, $value, $index)
{
return $array = array_merge(array_splice($array, max(0, $index - 1)), array($value), $array);
}
写在最后
本文介绍了一个功能丰富的array_splice函数,让您展示灵活使用参数带来的便利。 如果经常需要这样的操作,我们在全局辅助函数中讲一下。
快乐编码:_)
发表评论