2009-12-21 2 views
0

Je veux savoir s'il est possible de prendre un tableau et insérer les valeurs du tableau dans un tableau plus grand, plusieurs fois, de sorte que les valeurs du tableau plus petit remplissent le plus grand tableau. Say array1 a des valeurs ([0 => 'a'], [1 => 'b'], [2 => 'c']), et array2 peut contenir 8 valeurs. Alors, comment je prendrais les valeurs de array1 et les insérerions dans array2 en continu jusqu'à ce que array2 manque d'espace, de sorte que array2 aurait les valeurs 'a', 'b', 'c', 'a', 'b', 'taxi'?PHP-ILooping une valeurs de tableaux à travers un plus grand tableau

Merci à l'avance, ~ Hussain ~

Répondre

0

Essentiellement, vous voulez faire une boucle sur et au-dessus de la petite série, en ajoutant chaque élément du nouveau tableau jusqu'à ce qu'il ait atteint la taille désirée.

Considérez ceci:

$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

En supposant que votre tableau d'entrée est indexée de manière séquentielle:

$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); 

Ou

$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]; 

Le premier se remplit un tableau de telle sorte que il a au moins nombre désiré d'éléments et coupe le reste. Le second remplit un tableau le nombre désiré d'éléments modulo la taille du tableau original et additionne le reste.

0

est ici un pointeur à l'aide interne du tableau d'entrée, de garder les choses sur le plan conceptuel simple:

$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; 
Questions connexes