2009-12-03 70 views
1

如何使用while循環迭代,直到陣列1是空的。PHP而陣列1是空的迭代

到目前爲止,基於以下幾個條件我推在array1元素數組2。但我想迭代array1,直到array1中的所有內容都在array2中。

類似:

// 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]);  
} 

任何想法將不勝感激!

+0

你爲什麼需要從array1中刪除元素(直到它爲空)?不會簡單的迭代就足夠了嗎? – VolkerK 2009-12-03 21:36:58

回答

1

計數()會工作:

while(count(array1)){ 

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

} 

或使用do..until

do { 

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

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

'do {...}直到(...)'不正確的PHP語法。相反,你需要做'do {...} while(count($ array1)> 0);'。 – 2009-12-03 20:24:59

+0

公平點,你是正確的先生:) – TrippyD 2012-01-26 22:49:12

1

這是一個測試你的後僞碼我沒有擴大

$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更高的性能。無需每次計算數組元素的數量。 – 2009-12-03 19:58:18

+0

剛剛運行了一些基準測試,並且在評估數組是否爲空時,empty()平均比count()快44%。 我做過的基準測試使用了相同的輸入數據,並且對於這兩種情況都重複了相同的次數。 所以,如果你只想驗證數組是否爲空,那麼絕對沒有理由使用count()。使用空()。 – 2009-12-03 20:10:15