php打印数组-3分钟文章|在PHP字段的任意位置插入一个新元素,你如何处理?

前言

那么我们在这个系列文章中说了。 在这篇文章中,我们讨论 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函数,让您展示灵活使用参数带来的便利。 如果经常需要这样的操作,我们在全局辅助函数中讲一下。

快乐编码:_)