2009-12-03 5 views
1

array1이 비어있을 때까지 while 루프를 반복 수행하는 방법은 무엇입니까?array1이 비어있는 동안 php

지금까지 여러 조건에 따라 array1에서 array2로 요소를 푸시합니다. 하지만 array1부터 array2에 이르기까지 array1을 반복하고 싶습니다. 같은

뭔가 :

// 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

답변

1

수 (일 것) :

while(count(array1)){ 

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

} 

또는 여기

do { 

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

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

'do {...} until (...)'이 올바른 PHP 구문이 아닙니다. 대신 do {...} while (count ($ array1)> 0);을 할 필요가있다. –

+0

공정한 포인트, 당신은 정확합니다 선생님 :) – TrippyD

1

do..until 사용 나는 당신의 의사 코드에 확대 않은 시험

$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 높은 성능. 매번 배열 요소의 수를 세지 않아도됩니다. –

+0

일부 벤치 마크를 실행했는데 배열이 비어 있는지 평가할 때 empty()가 count()보다 평균 44 % 빠릅니다. 벤치 마크에서 동일한 입력 데이터를 사용하고 두 경우 모두 동일한 시간 동안 실험을 반복했습니다. 배열이 비어 있는지 확인하려는 경우 count()를 사용할 이유가 전혀 없습니다. empty()를 사용하십시오. –

관련 문제