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, тут уже надо код смотреть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 19:42
49000 руб./за проект
25 апр. 2024, в 19:41
2000 руб./за проект
25 апр. 2024, в 19:22
18000 руб./за проект