如何在当前位置之后复制 php 数组中的元素
How to duplicate an element in a php array after it current position
您好,我想知道如何将 php 数组中的元素复制 x 次。以这样的方式,克隆在原始之后出现。如果这是你的原始数组。
array(
[0]=>'Clone me please',
[1]=>'I m here for decoration'
)
导致:
array(
[0]=>'Clone me please',
[1]=>'Clone me please',
[2]=>'Clone me please',
[3]=>'I m here for decoration'
)
提前致谢。
我首先构建了一个函数来循环遍历您想克隆元素的次数..然后我创建了一个函数,它将在所需的键之后插入克隆..这是我已经拥有的两个函数的合并为不同的目的而建..
<?php
$array = array();
$array[0] = 'Clone Me Please';
$array[1] = 'Clone Me Too Please';
$array[2] = 'I am here for decoration';
print_r ( cloneItem(0,$array,3) );
print_r ( cloneItem(1,$array,2) );
function cloneItem($itemKey, $array, $timesToDuplicate){
$clone_me[0] = $array[$itemKey];
for ($x = 1; $x <= $timesToDuplicate; $x++){
$array = array_insert_after($array,$itemKey,$clone_me);
}
return $array;
}
function array_insert_after( $array, $key, $new ) {
$keys = array_keys( $array );
$index = array_search( $key, $keys );
$pos = false === $index ? count( $array ) : $index + 1;
return array_merge( array_slice( $array, 0, $pos ), $new, array_slice( $array, $pos ) );
}
输出..
Array
(
[0] => Clone Me Please
[1] => Clone Me Please
[2] => Clone Me Please
[3] => Clone Me Please
[4] => Clone Me Too Please
[5] => I am here for decoration
)
Array
(
[0] => Clone Me Please
[1] => Clone Me Too Please
[2] => Clone Me Too Please
[3] => Clone Me Too Please
[4] => I am here for decoration
)
这是一个使用几个 php 数组函数的简单函数。
function dupeElement(int $position, int $count, array $orig): array {
$mid = array_fill(0, $count, $orig[$position]);
$end = array_slice($orig, $position + 1);
array_splice($orig, ++$position);
return array_merge($orig, $mid, $end);
}
- array_fill用于创建新数组,根据要复制的元素在原数组中的索引位置
- array_slice用于获取要复制的元素后面的部分
本函数中的- array_splice用于去除数组的末尾部分。
- array_merge 让您可以按照您提供的顺序合并数值数组。
$position 参数应该是要复制的项目的确切数字索引(基于 0)。
$count 是您想要的重复次数。最终数组将是 $count + 1 个项目(因为它包括原始项目)。
对于您的示例,假设您的数组名为 $a:
$a = dupeElement(0, 2, $a);
您好,我想知道如何将 php 数组中的元素复制 x 次。以这样的方式,克隆在原始之后出现。如果这是你的原始数组。
array(
[0]=>'Clone me please',
[1]=>'I m here for decoration'
)
导致:
array(
[0]=>'Clone me please',
[1]=>'Clone me please',
[2]=>'Clone me please',
[3]=>'I m here for decoration'
)
提前致谢。
我首先构建了一个函数来循环遍历您想克隆元素的次数..然后我创建了一个函数,它将在所需的键之后插入克隆..这是我已经拥有的两个函数的合并为不同的目的而建..
<?php
$array = array();
$array[0] = 'Clone Me Please';
$array[1] = 'Clone Me Too Please';
$array[2] = 'I am here for decoration';
print_r ( cloneItem(0,$array,3) );
print_r ( cloneItem(1,$array,2) );
function cloneItem($itemKey, $array, $timesToDuplicate){
$clone_me[0] = $array[$itemKey];
for ($x = 1; $x <= $timesToDuplicate; $x++){
$array = array_insert_after($array,$itemKey,$clone_me);
}
return $array;
}
function array_insert_after( $array, $key, $new ) {
$keys = array_keys( $array );
$index = array_search( $key, $keys );
$pos = false === $index ? count( $array ) : $index + 1;
return array_merge( array_slice( $array, 0, $pos ), $new, array_slice( $array, $pos ) );
}
输出..
Array
(
[0] => Clone Me Please
[1] => Clone Me Please
[2] => Clone Me Please
[3] => Clone Me Please
[4] => Clone Me Too Please
[5] => I am here for decoration
)
Array
(
[0] => Clone Me Please
[1] => Clone Me Too Please
[2] => Clone Me Too Please
[3] => Clone Me Too Please
[4] => I am here for decoration
)
这是一个使用几个 php 数组函数的简单函数。
function dupeElement(int $position, int $count, array $orig): array {
$mid = array_fill(0, $count, $orig[$position]);
$end = array_slice($orig, $position + 1);
array_splice($orig, ++$position);
return array_merge($orig, $mid, $end);
}
- array_fill用于创建新数组,根据要复制的元素在原数组中的索引位置
- array_slice用于获取要复制的元素后面的部分 本函数中的
- array_splice用于去除数组的末尾部分。
- array_merge 让您可以按照您提供的顺序合并数值数组。
$position 参数应该是要复制的项目的确切数字索引(基于 0)。 $count 是您想要的重复次数。最终数组将是 $count + 1 个项目(因为它包括原始项目)。
对于您的示例,假设您的数组名为 $a:
$a = dupeElement(0, 2, $a);