@homon

Как можно добавить через цикл новое значение к массиву?

Есть такой массив
$array = [1,2,3,4,5,6,7,8,9];

Дальше мне нужно перебрать этот массив в цикле и если возвращаемое значение из метода равно true, это число нужно добавить в конец массива $array[], чтобы его можно было тоже перебрать в цикле
Я пробовал так, но не работает
foreach($array as $digit){
     $response = $this->doSomething($digit);
      if($response[0]==true){
           $array[] = $response[1];
      }
 }
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
@Arik
Так работает только с PHP 7, до не будет так работать.
Как вариант можно собирать новый массив и после этого цикла запустить повторно, если есть что перебрать.. можно попробовать через goto или в функцию вынести этот цикл
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
вот например код, добавит в конец твоего массива все результаты функции для которых $response[0] == true;
$array = array_merge(
        $array, 
        array_filter(array_map(function($d) {
            $response = $this->doSomething($d);
            return $response[0] ? $response[1] : null;
        }, $array))
    );


хотя я не уверен что именно это тебе нужно. если нужно проверять до бесконечности, пока там хоть что-то возвращает true, то наверное тут надо рекурсию.
ну и неясно, надо ли потом этот массив как-то еще использовать.
а, ну и еще фильтр уберет все элементы которые приравниваются к false, так что возможно тут надо свою фильтрующую функцию прописать.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
HTML Academy Санкт-Петербург
от 130 000 до 140 000 руб.
Zaymigo Нижний Новгород
от 20 000 до 100 000 руб.