我想知道是否可以取一个数组并将数组的值插入一个更大的数组,多次,以便较小数组的值填满较大的数组。
假设array1具有值([0 =>'a'],[1 =>'b'],[2 =>'c']),并且array2可以包含8个值。那么,我如何获取array1的值并将它们连续插入array2直到array2用完空间,这样array2的值将为'a','b','c','a','b', 'C', 'A', 'b'?
提前致谢, 〜〜侯赛因
答案 0 :(得分:0)
基本上,您希望遍历小数组,将每个元素添加到新数组,直到达到所需的大小。
考虑一下:
$max = 8;
$Orig_Array = array('a', 'b', 'c');
$Next_Array = array();
while True
{
foreach($Orig_Array as $v)
{
$Next_Array[] = $v;
if(count($Next_Array) >= $max)
break 2;
}
}
答案 1 :(得分:0)
假设您的输入数组按顺序编制索引:
$len = count($input);
$output = array();
for ($i = 0; $i < MAX_SIZE; ++$i)
$output[] = $input[$i % $len];
答案 2 :(得分:0)
$a = array('a','b','c');
$desired = 8;
$b = array();
for($i=0;$i<($desired/count($a))+1;++$i) $b = array_merge($b,$a);
array_splice($b,$desired);
或者
$a = array('a','b','c');
$desired = 8;
$b = array();
for($i=0;$i<$desired/count($a);++$i) $b = array_merge($b,$a);
for($i=0;$i<($desired-count($b)-1);++$i) $b[] = $a[$i];
第一个填充数组,使其至少所需数量的元素,并切断其余元素。第二个将数组填满所需数量的元素,以模块化原始数组大小,然后将其余部分加起来。
答案 3 :(得分:0)
这是一个使用输入数组的内部指针,以保持概念上的简单:
$input = array(1, 2, 3);
$size = 32;
$output = array();
for ( $i = 0; $i < $size; $i++ ) {
$curr = current($input);
if ( $curr === false ) {
reset($input);
$curr = current($input);
}
$output[] = $curr;
next($input);
}
print_r($output);die;