Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

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

Здравствуйте, подскажите пожалуйста вот у меня есть функция которая делает некоторые расчёты, и дело в том что функция должна заполнить массив $array_col8 элементами которые меньше $ArrayMpe. Вот собственно мой код:
function table1ColMassDopGir1($D,$MAX,$E,$BoolED,$array_arg1,$array_arg2,$ArrayMpe,$LASTYELLOW,$arrayTemp) {
 	$array_col4 = array(); //Ячейка Масса дополнительных гирь ∆L, г
 	$array_col6 = array(); //Ячейка Погрешность Е, г
 	$array_col8 = array(); //Ячейка Скорректированная погрешность Ес, г
 	$ch = 0;
	while($ch == 0) {
	 	for($i = 0; $i < 1; $i++) { //Цикл который крутиться один раз
		 	$array_col4[$i] = IndexResult($arrayTemp);
			$array_col6[$i] =  (((0.5 * $D) + $array_arg2[$i]) - $array_col4[$i]) - $array_arg1[$i];
	 		$Temp = $array_col6[$i] - $LASTYELLOW;
	 		if(abs($Temp) < $ArrayMpe[$i]) {
	 			$array_col8[$i] = $Temp;
	 			$ch = 1;
	 		}
	 		else {
	 			$ch = 0;
	 		}
	 	}
	}
	return $ArrayTable1 = array($array_col4,$array_col6,$array_col8,$ch);
 }

Здесь так же есть функция IndexResult которая получает случайным образом значений из массива, массив состоит из 11 элементов, и затем то значение которое мы взяли, удаляем из массива. Это случайное значение просто участвует в расчёте.
function IndexResult($arr) {
	 $index = array_rand($arr); //Рандомим индекс
	 $tempElement = $arr[$index]; //Получаем элемент из массива
	 unset($arr[$index]); //Удаляем элемент из массива
	 $arr = array_values($arr); //Переиндексируем
	 return $tempElement; //Возвращаем
 }


Проблема в том что когда я добавляю цикл while который должен все повторить заново весь расчёт, если элемент не меньше ArrayMpe, иногда вылетает вот такая ошибка:
Fatal error: Maximum execution time of 60 seconds exceeded in /var/www/u0421090/public_html/m-tech.avm-t.ru/sites/all/modules/webformizi/webformizi.module on line 544. Подскажите пожалуйста что я тут делаю не так? Заранее благодарю за ответ.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
mashletov
@mashletov
Math.random()
Прочитал только последний абзац.
По умолчанию, на выполнение скрипта выделяется 60 секунд.
Это время можно изменить с помощью функции set_time_limit(секунды).
Поместите, например, set_time_limit(600) в начало функции.
Другое дело, если цикл уходит в loop, тут уже надо код смотреть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы