【问题标题】:If statement structure in PHPPHP中的if语句结构
【发布时间】:2011-02-02 20:22:50
【问题描述】:

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

而($row = mysql_fetch_array($result)) { $varp = $row['ustk_retail']; 如果 ($varp80000) && ($varp100000) && ($varp120000) && ($varp140000) && ($varp160000) && ($varp180000) && ($varp200000) && ($varp220000) && ($varp240000) && ($varp260000) && ($varp280000) && ($varp=300000) { $o13 = "1"; } }

【问题讨论】:

  • 指定您遇到了哪个错误。
  • 在此发布什么您遇到了什么错误?
  • 我收到一个解析错误 - 解析错误:第 35 行 C:\wamp\www\wp\wp-content\themes\canvas\includes\usedprice.php 中的解析错误 第 35 行是 - 如果(($varp=>80000) && ($varp
  • 您刚刚更改了问题。这真的没有帮助。
  • 好的,提出一个问题然后完全改变它是没有帮助的。也许你可以先学习 PHP 语法,然后开始提问。您可以先将每个 => 替换为 >=。

标签: php if-statement


【解决方案1】:

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

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

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

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

【讨论】:

  • +1,即使您不熟悉所有标记,T_DOUBLE_ARROW 也是一个非常具有描述性的名称。遗憾的是,有些人需要将代码分成几行才能理解这一点。 (如果他们得到unexpected T_PAAMAYIM_NEKUDOTAYIM,那将是非常可以理解的......)
【解决方案2】:

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

更新:
你说的对。它很小但很难发现错误。
我把整行分成几部分,看看问题出在哪里:

<?php
if 
(
$varp
=>
80000
)

所以,它在第 5 行显示解析错误,我必须仔细检查此运算符。
当然,起初我将问题行与其余代码分开来确定。

【讨论】:

  • 其实,如果你知道错误信息中提到的T_DOUBLE_ARROW指的是什么,错误是显而易见的,很容易找到。请参阅我的答案中的解析器标记的链接列表。
【解决方案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】:

    你在 if 条件中犯了一个错误。大于等于号是 >= 而不是 =>。

    【讨论】:

      【解决方案5】:

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

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

      在我看来,这会生成最干净、可读性最强的代码。

      【讨论】:

      • 你的意思可能是switch(true) { /* rest of your code goes here */ },对吧?
      • 啊,对了,tnx,如果范围达到“0”,以后会是一个很好的错误:)
      • 哇,我用 PHP 开发多年,但我从未见过 switch 语句的这种用法,太酷了!谢谢 ;)
      【解决方案6】:

      这是一种更易读、更紧凑的方法:

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

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

      【讨论】:

        【解决方案7】:

        您可能想要将($varp=300000) 更改为($varp==300000),并且将完整的if 语句包含在() 中可能会有所帮助,就像这样

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

        另一方面,这些奇怪的 $varp#### 变量从何而来?

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

            “大于或等于>= NOT =>。您使用=> 表示键/值的数组。

            【讨论】:

              【解决方案10】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-03-21
                • 1970-01-01
                • 2014-11-09
                • 1970-01-01
                • 2015-07-28
                • 2013-12-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多