Intereting Posts
Есть ли лучший способ справиться с формами в PHP? Запрос JSONP на страницу PHP не работает (перекрестный домен) Добавление нескольких конфигурационных массивов в PhalconPHP Codeigniter – загрузка определенной библиотеки JS на определенном виде как обрабатывать символ горизонтальной эллипсис (три точки) в XML-выходе через PHP jQuery $ .ajax () с PHP Неустранимая ошибка: «перерыв» не в контексте «loop» или «switch» в Как добавить класс в каждый n-й элемент в php-контуре (wordpress) PHP – длительная фоновая задача Ограничение количества символов заголовка в Php без разделения слов preg_match (): Неизвестный модификатор '@' PHP DOMDocument loadHTML неправильно кодирует UTF-8 Как автоматически изменить размер DIV с помощью CSS, сохраняя соотношение сторон? Проверьте ошибки запроса codeigniter вместо того, чтобы показывать их пользователю Вывод исходного потока изображения, а не jpeg, изменение размера изображения

Если структура оператора в PHP

Я продолжаю получать ошибку со следующим битом кода. Вероятно, это небольшая вещь, но я не вижу, что не так.

 while ($ row = mysql_fetch_array ($ result))
   {
    $ varp = $ row ['ustk_retail'];
    if ($ varp <80000) {$ o1 = 1;  }
    if (($ varp => 80000) && ($ varp <100000)) {$ o2 = "1";  }
    if (($ varp => 100000) && ($ varp <120000)) {$ o3 = "1";  }
    if (($ varp => 120000) && ($ varp <140000)) {$ o4 = "1";  }
    if (($ varp => 140000) && ($ varp <160000)) {$ o5 = "1";  }
    if (($ varp => 160000) && ($ varp <180000)) {$ o6 = "1";  }
    if (($ varp => 180000) && ($ varp <200000)) {$ o7 = "1";  }
    if (($ varp => 200000) && ($ varp <220000)) {$ o8 = "1";  }
    if (($ varp => 220000) && ($ varp <240000)) {$ o9 = "1";  }
    if (($ varp => 240000) && ($ varp <260000)) {$ o10 = "1";  }
    if (($ varp => 260000) && ($ varp <280000)) {$ o11 = "1";  }
    if (($ varp => 280000) && ($ varp <300000)) {$ o12 = "1";  }
    if ($ varp> = 300000) {$ o13 = "1";  }
   }

Related of "Если структура оператора в PHP"

Больше или равно значению >= sign, not =>

Обновить:
Ты прав. Это мало, но трудно найти ошибку.
Мне потребовалось разделить целую линию на части, чтобы увидеть, где проблема:

 <?php if ( $varp => 80000 ) 

Таким образом, в строке 5 указывается ошибка синтаксического анализа, и мне пришлось дважды проверять этот оператор.
Конечно, сначала я отделил проблемную строку от остальной части кода, чтобы быть уверенным.

Запуск php -l (lint) в вашем коде, я получаю

Ошибка анализа: ошибка синтаксиса, неожиданный T_DOUBLE_ARROW

Маркер T_DOUBLE_ARROW – это то, что ожидает PHP при назначении значений массива ключам массива.

При сравнении для T_IS_GREATER_OR_EQUAL или равного PHP Parser ожидает T_IS_GREATER_OR_EQUAL , что означает, что вы должны использовать >= вместо => .

Видеть

  • в главе «Операторы сравнения» в Руководстве по PHP и
  • Список токенов Parser в руководстве PHP

У вас есть ошибка выражения.

 $varp=>220000 // is not a valid php expression => operator is used to assign values in arrays like: $x = array( 'foo' => 'bar'); >= is the comparation assigment greater than or equal 

Вы допустили ошибку в условиях if. Значения, превышающие знак равенства, равны> = и не =>.

Ответ уже дан, но думал, что это достаточно аккуратно, чтобы делиться:

PHP принимает булевы выражения в инструкции switch.

 switch(TRUE) { case $range <= 10: echo "range below or equal to 10"; break; case $range <= 20: echo "range above 10 below or equal to 20"; break; case $range <= 30: echo "range above 20 below or equal to 30"; break; default: echo "high range"; } 

По-моему, это создает самый чистый наиболее читаемый код.

Это более читаемый и компактный способ сделать то же самое:

 $ranges = range(300000, 80000, -20000); $index = 1; $varp = 220001; foreach ($ranges as $i => $range) { if ($varp >= $range) { $index = 13 - $i; break; } } ${'o' . $index} = 1; 

В любом случае – я думаю, что вы делаете что-то неправильно с использованием имени переменной.

Вероятно, вы захотите изменить ($varp=300000) на ($varp==300000) и это может помочь заключить полный if-statement внутри () , например

 if($varp80000 && $varp100000 && $varp120000 && $varp140000 && $varp160000 && $varp180000 && $varp200000 && $varp220000 && $varp240000 && $varp260000 && $varp280000 && $varp==300000) { $o13 = "1"; } 

С другой стороны, откуда эти странные переменные $ varp ####?

Не уверен, что код, который вы опубликовали, каким-то образом испортился, но похоже, что в некоторых условиях if отсутствует «==». Кроме того, как указал Skilldrick, все условие if должно быть в круглых скобках

«Больше или равно>> NOT =>. Вы используете => для массивов для ключей / значений.

Добавьте еще одну скобку вокруг условий, if

if ( ($varp80000) && ($varp100000) && ($varp120000) && ($varp140000) && ($varp160000) && ($varp180000) && ($varp200000) && ($varp220000) && ($varp240000) && ($varp260000) && ($varp280000) && ($varp=300000) ) { $o13 = "1"; }