В цикле for второй параметр в виде строки

jenia

Новичок
В цикле for второй параметр в виде строки

Привет всем! У меня возникла следующая проблема:
Есть цикл for вида:
for (expr1; expr2; expr3) {...}.
Так вот, expr2 формируется автоматически и записано в виде строки в переменную, допустим $usl. Как эту пременную вставить в for так, чтобы всё работало?
 

demongloom

Новичок
Нифига не понял.

Ты имеешь в виду типа

$usl = "string";

for($i = 0; $i < $usl; $i++) {
}

делать? так нельзя. можно только через
for($i = 0; $i < strlen($usl); $i++) {
}

Если я тебя неправильно понял, то поясни. Пример кода хотя бы.
 

SelenIT

IT-лунатик :)
jenia

hint: второе условие в for - логическое значение. Его можно вычислить для выражения и присвоить переменной с таким же успехом, что и записать само выражение в строку.
 

jenia

Новичок
demongloom
В $usl уже записано само логическое выражение, допустим:
$usl = "\$i <= 5";
Как теперь это вставить в for?

SelenIT
Ты предлагаешь вместо логического условия поставить саму переменную $usl? К примеру
for($i = 0; $usl; $i++) {
}
Или я тебя не понял.
 

SelenIT

IT-лунатик :)
Виноват, действительно, поторопился и дал бессмыссленный совет. Настолько впечатлила странность постановки задачи. Откуда появилась необходимость записывать условие в строку?
 

jenia

Новичок
Генерируется это условие в зависимости от пришедших от пользователя данных, т.е. в условии может быть <, >, <=, >=, =.
И цифра может быть любая. С помошью конкатенации строк создаётся это условие. И естественно, что оно само по себе представляет строку.
 

antson

Новичок
Партнер клуба
в таком виде
for($i = 0; $usl; $i++)
имеют смысл только сравнения меньше и меньше или равно.
меньше или равно сводиться к условию
меньше $x+1.

вместо сбора строки "$i опер X"
просто проверяй
if( $опер == "<=" ) $X++;
for($i=0;$i<$X;$i++)

Если же у тебя выражения могут быть все как пишешь, то см. что и счетная переменная должна тогда инициализировать не только нулем и в этих случаях $i--
 

jenia

Новичок
antson
Я в принципе тебя понял, но пока попытаюсь "в лоб" решить проблему, т.е. использовать именно сгенерированную переменную. Если не получится тогда воспользуюсь твоим советом.
 

SelenIT

IT-лунатик :)
jenia, antson прав. Нужно генерить всю логику цикла целиком. Или сам цикл оставить единообразным, а уже внутри него путем несложных арифметических действий получать из $i ту величину, которая нужна при данных входных параметрах.
 

Фанат

oncle terrible
Команда форума
Женя, а теперь расскажи подробно, решением какой задачи ты занимаешься.
тебе подскажут правильное решение.
 
Сверху