如果PHP中的语句结构

时间:2010-03-31 09:24:11

标签: php if-statement

我一直遇到以下代码错误。这可能是一件小事,但我看不出有什么问题。

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"; }
  }

10 个答案:

答案 0 :(得分:27)

在您的代码上运行php -l (lint)我得到了

  

解析错误:语法错误,意外T_DOUBLE_ARROW

T_DOUBLE_ARROW标记是PHP在将数组值分配给数组键时所期望的。

当比较大于或等于时,PHP解析器需要T_IS_GREATER_OR_EQUAL,这意味着您必须使用>=而不是=>

答案 1 :(得分:11)

大于或等于>=符号,而不是=>

更新:
你是对的。它很小但很难找到错误。
我把整条线分成碎片,看看问题出在哪里:

<?php
if 
(
$varp
=>
80000
)

所以,它说第5行的解析错误,我不得不重新检查这个运算符 当然,首先我将问题行与其余代码分开以确定。

答案 2 :(得分: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

答案 3 :(得分:2)

这样做更具可读性和紧凑性:

$ranges = range(300000, 80000, -20000);

$index = 1;

$varp = 220001;

foreach ($ranges as $i => $range) {
    if ($varp >= $range) {
        $index = 13 - $i;
        break;
    }
}

${'o' . $index} = 1;

无论如何 - 我认为你使用变量名称的结果做错了。

答案 4 :(得分:2)

已经给出了答案,但认为这足以分享:

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";
}

在我看来,这会生成最清晰,最易读的代码。

答案 5 :(得分:2)

你在if条件中犯了一个错误。大于等于符号的是&gt; =而不是=&gt;。

答案 6 :(得分:1)

您可能希望将($varp=300000)更改为($varp==300000),这可能有助于将完整的if语句括在()中,就像这样

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

另一方面,这些奇怪的$ varp ####变量来自哪里?

答案 7 :(得分:1)

不确定您发布的代码是否以某种方式搞砸了,但在某些if条件下,您似乎缺少“==”。另外,正如Skilldrick指出的那样,整个if条件应该在括号中

答案 8 :(得分:0)

“大于或等于是&gt; = NOT =&gt;。对于键/值的数组使用=&gt;。

答案 9 :(得分:-1)

if ....

中的条件周围再添加一个括号

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