PHP-ILooping数组值通过一个更大的数组

时间:2009-12-21 23:25:25

标签: php arrays insert loops

我想知道是否可以取一个数组并将数组的值插入一个更大的数组,多次,以便较小数组的值填满较大的数组。

假设array1具有值([0 =>'a'],[1 =>'b'],[2 =>'c']),并且array2可以包含8个值。那么,我如何获取array1的值并将它们连续插入array2直到array2用完空间,这样array2的值将为'a','b','c','a','b', 'C', 'A', 'b'?

提前致谢, 〜〜侯赛因

4 个答案:

答案 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;