2009-12-21 56 views
0

我想知道是否有可能采取数组并将数组的值插入到一个更大的数组中,多次,以便更小的数组的值填满更大阵列。假设array1具有值([0 =>'a'],[1 =>'b'],[2 =>'c']),并且array2可以保存8个值。那么,如何获取array1的值并将它们连续插入到array2中,直到array2的空间不足,以便array2的值为'a','b','c','a','b', '出租车'?PHP-ILooping阵列值通过一个更大的阵列

由于提前, 〜侯赛因〜

回答

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; 
    } 
} 
0

假设你的输入阵列被顺序地编入索引:

$len = count($input); 
$output = array(); 
for ($i = 0; $i < MAX_SIZE; ++$i) 
    $output[] = $input[$i % $len]; 
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]; 

第一个填满的阵列,使得它至少有所需数量的元素和切断其余的。第二个填充一个数组,填充所需数量的元素模数原始数组大小,并加上其余的。

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;