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

  • Автор темы Автор темы jenia
  • Дата начала Дата начала

jenia

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

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

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

$usl = "string";

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

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

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

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

SelenIT
Ты предлагаешь вместо логического условия поставить саму переменную $usl? К примеру
for($i = 0; $usl; $i++) {
}
Или я тебя не понял.
 
Виноват, действительно, поторопился и дал бессмыссленный совет. Настолько впечатлила странность постановки задачи. Откуда появилась необходимость записывать условие в строку?
 
Генерируется это условие в зависимости от пришедших от пользователя данных, т.е. в условии может быть <, >, <=, >=, =.
И цифра может быть любая. С помошью конкатенации строк создаётся это условие. И естественно, что оно само по себе представляет строку.
 
в таком виде
for($i = 0; $usl; $i++)
имеют смысл только сравнения меньше и меньше или равно.
меньше или равно сводиться к условию
меньше $x+1.

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

Если же у тебя выражения могут быть все как пишешь, то см. что и счетная переменная должна тогда инициализировать не только нулем и в этих случаях $i--
 
antson
Я в принципе тебя понял, но пока попытаюсь "в лоб" решить проблему, т.е. использовать именно сгенерированную переменную. Если не получится тогда воспользуюсь твоим советом.
 
jenia, antson прав. Нужно генерить всю логику цикла целиком. Или сам цикл оставить единообразным, а уже внутри него путем несложных арифметических действий получать из $i ту величину, которая нужна при данных входных параметрах.
 
Женя, а теперь расскажи подробно, решением какой задачи ты занимаешься.
тебе подскажут правильное решение.
 
Сверху