Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的If语句结构_Php_If Statement - Fatal编程技术网

PHP中的If语句结构

PHP中的If语句结构,php,if-statement,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))

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

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"; } } while($row=mysql\u fetch\u数组($result)) { $varp=$row['ustk_retail']; 如果($varp80000)&($varp100000)&($varp120000)&($VARP14000)&($VARP16000)&($varp180000)&($varp200000)&($varp200000)&($VARP24000)&($VARP26000)&($VARP28000)&($varp=300000){$o13=“1”} }
在代码上运行
php-l
(lint),我得到一个

分析错误:语法错误,意外的T\u双箭头

T\u双箭头
标记是PHP在为数组键分配数组值时所期望的

当比较大于或等于时,PHP解析器希望
T\u大于或等于
,这意味着您必须使用
=
而不是
=>


如果
,请在
中的条件周围再添加一个括号


如果($varp80000)&($varp100000)&($varp120000)&($VARP14000)&($VARP16000)&($varp180000)&($varp200000)&($varp200000)&($VARP40000)&($VARP26000)&($varp280000)&($varp=300000)){$o13=“1”}
($varp=300000)
,将完整的if语句封装在
()
中可能会有所帮助,如下所示

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

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

不确定您发布的代码是否以某种方式出错,但在某些if条件下,您似乎缺少“==”。此外,正如斯基尔德里克指出的,整个if条件应该放在括号中

这是一种更具可读性和简洁性的方法:

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

$index = 1;

$varp = 220001;

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

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

无论如何-我认为使用结果的变量名有问题。

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

更新:
你是对的。虽然很小,但很难发现错误。
我花了很长时间把整条生产线分成几部分,看看问题出在哪里:

<?php
if 
(
$varp
=>
80000
)

您有一个表达式错误

$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

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

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";
}
开关(真){

case$range您在if条件中犯了一个错误。大于等于号为>=而非=>。

“大于或等于is>=NOT=>。您使用=>作为键/值的数组。

指定您遇到的错误。是否在此处发布您遇到的错误?我遇到一个解析错误-解析错误:C:\wamp\www\wp\wp content\themes\canvas\includes\usedprice.php第35行的解析错误是-if($varp=>80000)和&”($varpy您刚刚更改了问题。这真的没有帮助。好吧,提出一个问题,然后完全更改它是没有帮助的。也许您可以先学习PHP语法,然后开始提问。您可以先将every=>替换为>=。您可能指的是
switch(true){/*您的其余代码都在这里*/}
,但是,对吗?啊,对了,tnx,如果range达到“0”的话,在以后会是一个很好的bug(哇,我用PHP开发了很多年,但我从来没有见过switch语句的这种用法,它是coool!thx;)事实上,如果您知道错误消息中提到的T_DOUBLE_ARROW是指什么,那么错误是显而易见的,也很容易找到。请参阅我的答案中的解析器标记链接列表。+1即使您不熟悉所有标记,
T_DOUBLE_ARROW
也是一个相当描述性的名称。遗憾的是,有人需要在为了理解这一点,我们需要多行代码(如果他们得到了出乎意料的T_PAAMAYIM_NEKUDOTAYIM
),这是可以理解的