Как повторить цикл в php?

Задача: если последний элемент массива == 9 то удалить его
Код работает:
$run = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9);
    $count_run = count($run);
    $last = $count_run-1;
    
    for ($z = 0; $z < $count_run; $z++) {

        if($z == $last && $run[$z] == 9){
            unset($run[$z]);
            sort($run);
        }
    }

Вопрос: как если условие сработало и последний элемент действительно равен 9 повторить цикл и так до тех пор пока последний элемент != 9
Вроде рекурсия нужна для этого, но я не очень что-то понимаю как ей пользоваться и синтаксически как её писать...
  • Вопрос задан
  • 1552 просмотра
Решения вопроса 2
$run = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9);
foreach($run as $key=>$val)
	if($val==9)
		unset($run[$key]);
sort($run);
Ответ написан
Комментировать
zvermafia
@zvermafia
WebDev
Вообще сюда нельзя писать свои задачи, что бы кто-то за тебя решил! Но все же вот мой вариант:
$run = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9);

function cleaner($run)
{
	$count_run = count($run);
	$last = $count_run-1;
	    
	for ($z = 0; $z < $count_run; $z++)
	{
	    if($z == $last && $run[$z] == 9)
	    {
	        unset($run[$z]);
	        sort($run);
	        // Здесь начинаем использовать рекурсию
	        $run = cleaner($run);
	    }
	}

	return $run;
}

$new_run = cleaner($run);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vilgeforce
Раздолбай и программист
Вам нужно ваш цикл поместить в другой цикл. Этот цикл должен завершаться только при условии, что последний элемент не был удален. Или если в массиве нет больше данных. Рекурсия тут совершенно не нужна :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы