Если структура оператора в 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"; }
}
Ответы
Ответ 1
Больше или равно знаку >=
, а не =>
Обновление:
Ты прав. Это маленькая, но трудно найти ошибку.
Мне потребовалось разделить целую строку на части, чтобы увидеть, где проблема:
<?php
if
(
$varp
=>
80000
)
Итак, он говорит об ошибке синтаксического анализа в строке 5, и мне пришлось дважды проверять этот оператор.
Конечно, сначала я отделил проблемную строку от остальной части кода, чтобы быть уверенным.
Ответ 2
Запуск php -l
(lint) в вашем коде. Я получаю
Ошибка анализа: синтаксическая ошибка, неожиданный T_DOUBLE_ARROW
Ток T_DOUBLE_ARROW
- это то, что ожидает PHP при назначении значений массива ключам массива.
При сравнении для Больше или равно PHP Parser ожидает T_IS_GREATER_OR_EQUAL
, что означает, что вы должны использовать >=
вместо =>
.
См
Ответ 3
У вас есть ошибка выражения.
$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
Ответ 4
Это более читаемый и компактный способ сделать то же самое:
$ranges = range(300000, 80000, -20000);
$index = 1;
$varp = 220001;
foreach ($ranges as $i => $range) {
if ($varp >= $range) {
$index = 13 - $i;
break;
}
}
${'o' . $index} = 1;
В любом случае - я думаю, что вы делаете что-то неправильно с использованием имени переменной.
Ответ 5
Ответ уже дан, но думал, что это достаточно аккуратно, чтобы делиться:
PHP принимает в нем инструкцию boolean.
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";
}
По-моему, это генерирует самый чистый наиболее читаемый код.
Ответ 6
Вы допустили ошибку в условиях if. Значок, превышающий знак равенства, равен >= и not = > .
Ответ 7
Вероятно, вы хотите изменить ($varp=300000)
на ($varp==300000)
, и это может помочь заключить полный if-statement внутри ()
, как этот
if($varp80000 && $varp100000 && $varp120000 && $varp140000 && $varp160000 && $varp180000 && $varp200000 && $varp220000 && $varp240000 && $varp260000 && $varp280000 && $varp==300000) { $o13 = "1"; }
В другой заметке, где эти странные переменные $varp #### исходят из?
Ответ 8
Не уверен, что код, который вы опубликовали, каким-то образом перепутался, но похоже, что в некоторых из условий if отсутствует "==". Кроме того, как указал Skilldrick, все условие if должно быть в круглых скобках
Ответ 9
"Больше или равно is >= NOT = > . Вы используете = > для массивов для ключей/значений.
Ответ 10
Добавьте еще одну скобку вокруг условий в if
....
if ( ($varp80000) && ($varp100000) && ($varp120000) && ($varp140000) && ($varp160000) && ($varp180000) && ($varp200000) && ($varp220000) && ($varp240000) && ($varp260000) && ($varp280000) && ($varp=300000) ) { $o13 = "1"; }