2009-12-03 6 views
1

Как выполнить итерацию с циклом while до тех пор, пока массив1 не будет пустым.php while array1 is empty iterate

До сих пор, основываясь на нескольких условиях, я нажимаю элементы из массива 1 в массив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

Почему ты нужно удалить элементы из массива1 (пока он не станет пустым)? Не хватит ли простой итерации? – VolkerK

ответ

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);'. –

+0

Справедливая точка, вы правы сэр :) – TrippyD

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 более высокая производительность. Не нужно каждый раз подсчитывать количество элементов массива. –

+0

Просто запустил некоторые тесты, а пустой() в среднем на 44% быстрее, чем count(), когда оценивает, является ли массив пустым или нет. Тест показал, что я использовал одни и те же входные данные и повторил эксперимент столько же раз для обоих случаев. Итак, если вы хотите проверить, пуст ли массив, нет никаких оснований использовать count(). Используйте empty(). –

 Смежные вопросы

  • Нет связанных вопросов^_^