2009-12-03 65 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