2009-12-03 4 views
1

Comment peut itérer avec une boucle while jusqu'à ce que array1 soit vide. Jusqu'ici, sur la base de plusieurs conditions, je pousse des éléments de array1 à array2. Mais je veux parcourir array1 jusqu'à ce que tout de array1 soit dans array2.php alors que array1 est vide itérer

quelque chose comme:

// or while everything from array1 is on array2 
while(array1 is empty){ 

    if(somecondition1) 
    array_push(array2,"Test"); 
    unset(array1[$i]); 
    elseif(somecondition2) 
    array_push(array2,"Test"); 
    unset(array1[$i]);  
} 

Toutes les idées seront apprécier!

+0

Pourquoi vous besoin de retirer les éléments de array1 (jusqu'à ce qu'il soit vide)? Une simple itération ne suffirait-elle pas? – VolkerK

Répondre

1

count() fonctionnerait:

while(count(array1)){ 

    if(somecondition1) 
    array_push(array2,"Test"); 
    elseif(somecondition2) 
    array_push(array2,"Test"); 

} 

ou utiliser do..until

do { 

    if(somecondition1) 
    array_push(array2,"Test"); 
    elseif(somecondition2) 
    array_push(array2,"Test"); 

} until (count(array1) == 0) 
+0

'faire {...} jusqu'à ce que (...)' ne soit pas une syntaxe PHP correcte. Au lieu de cela, vous devez faire 'do {...} while (count ($ array1)> 0);'. –

+0

Juste point, vous avez raison monsieur :) – TrippyD

1

Voici un test que je ne développerai votre pseudo-code

$array1 = range(1, 10); 
$array2 = array(); 

$i = 0; 
while (!empty($array1)) 
{ 
    if ($array1[$i] % 2) 
    { 
    array_push($array2, "Test Even"); 
    unset($array1[$i]); 
    } else { 
    array_push($array2, "Test Odd"); 
    unset($array1[$i]); 
    } 
    $i++; 
} 

echo '<pre>'; 
print_r($array1); 
print_r($array2); 
+0

+1 performance supérieure. Pas besoin de compter la quantité d'éléments du tableau à chaque fois. –

+0

Juste couru quelques benchmarks, et empty() est en moyenne 44% plus rapide que count() lors de l'évaluation si un tableau est vide ou non. Le cas-test j'ai utilisé les mêmes données d'entrée, et répété l'expérience la même quantité de fois pour les deux cas. Donc, si vous voulez seulement vérifier si le tableau est vide, il n'y a absolument aucune raison d'utiliser count(). Utilisez vide(). –

Questions connexes