2009-12-21 155 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;