@Kutuz25

Почему бесконечный цикл?

Всем привет. Подскажите почему в вайл получается бесконечный цикл? Вот часть кода, скажите, пожалуйста, что я делаю не так?
function SetReferals($sum, $referal){
		$ref_system = $this->db->query("SELECT `rs_percent` FROM `db_ref_system` ORDER BY `id` ASC"); // извлечение процентов, сортировка их по ID в порядке возрастания
		if($ref_system->NumRows()>0){ // проверка есть ли данные в предыдущем запросе
			foreach($ref_system->fetchAll() as $ref){
				$percent[] = $ref['rs_percent']; // добавление в массив процентов
			}
			$sum = floatval($sum);
			$sum = round($sum, 2);
			$referal = intval($referal);
			$i=0; // счетчик массива
			while ($percent){ // цикл, работает пока не переберет в массиве $percent все строки
			
			// Здесь остальной код с начислениями по уровням
			
				$referal = intval($referer);//в переменную реферала записываем значение реферера для продолжения работы цикла
				$i++;// увеличение счетчика на 1
			}
		}
		
	}


Если проверить цикл с процентами, то выдает следующую информацию, то есть все верно..
659aadc452759136034776.jpeg
  • Вопрос задан
  • 817 просмотров
Решения вопроса 2
Daemon23RUS
@Daemon23RUS
while -> foreach
PS.
$result = $ref_system->fetchAll();
foreach($result as $ref)
Ответ написан
yesbro
@yesbro
Думаю, помогаю думать
Совет выше правильный. while надо заменить на foreach. While работает пока выражение внутри круглых скобок будет возвращать true (с учетом приведения типов), а непустой массив всегда возвращает true. Судя по комментарию ты думаешь что while так же как foreach будет перебирать массив по элементам. Это ошибка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@SidVisceos
Замени
while ($percent)
на
while ($percent[$i])

Или используй foreach. Просто использование while ($percent) лишено здравого смысла.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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