[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите разобраться с циклом
andrey263824
Есть кусок кода:

$step = $_POST['stepunload'];

for ($i=0; $i<$length; $i=$i+$step)

$csv_file.= $res[$i]->num_check.";".$res[$i]->datereg.";".$res[$i]->name.";".$res[$i];

}

$step равен 1;
если выполнять в таком виде, то скрип выполняется на несколько порядков дольше чем если переменную $step поменять на 1:

for ($i=0; $i<$length; $i=$i+1)

Почему так?
AllesKlar
что говорит var_dump($i) внутри цикла?

_____________
[продано копирайтерам]
andrey263824
string(1)
andrey263824
вернее int(1) int(2) и так далее в обоих случаях. А разница во времени огромная. Первый - около минуты. Второй - менее секунды
Guest
$step = intval($_POST['stepunload']);
$length = intval($length);
for ($i=0; $i<$length; $i+=$step)

А вот так сколько выполняется? И какая версия php?
andrey263824
Цитата (Guest @ 5.06.2015 - 00:32)
$step = intval($_POST['stepunload']);
$length = intval($length);
for ($i=0; $i<$length; $i+=$step)

А вот так сколько выполняется? И какая версия php?

не помогло.
andrey263824
php 5.3.3
andrey263824
а если сделать так:

$step = 1;

For ($i=0; $i<$length; $i=$i+$step)

то все в порядке.
andrey263824
Проблема остается.
S.Chushkin
$step = (string) 1;
$t = microtime(1);
for ($i=0; $i < 10000000; $i += $step) {
}

var_dump(microtime(1) - $t);

0.747
$step = (int) 1;
$t = microtime(1);
for ($i=0; $i < 10000000; $i += $step) {
}

var_dump(microtime(1) - $t);

0.290

Т.е. с int быстрее в два раза, но не в десятки раз.
PHP 5.6.9, без отладчиков и пр. лабуды.

И я не помню, чтобы в 5.3 были подобные проблемы.
Вероятнее всего у Вас проблема где-то в другом месте:
- включите вывод всех ошибок (в Вашем коде нет скобки } - может опечатка, а может нет)
- попытайте цикл без вашей "$csv_file.="
- Отключите отладчики и пр. хрень
- Установите другую версию ПХП и попытайте, возможно глюк именно в версии. (хотя сильно сомневаюсь)
- Или переустановите текущую, начисто, возможно что-то глюкнуло при эксплуатации. (маловероятно, но вдруг)

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Invis1ble
Цитата (andrey263824 @ 4.06.2015 - 22:15)
кусок кода

переменная $step может где-то меняется, например во внешнем цикле

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.