在if语句(PHP)中组合赋值和相等时出现奇怪的结果

在if语句(PHP)中组合赋值和相等时出现奇怪的结果,php,debugging,Php,Debugging,在CentOS上使用PHP5.3.10进行测试 在脚本运行中: $test = "62 3/4"; if($pos = strpos($test,' ') !== false) { $test= substr($test,0,$pos); // use $pos } // $test is "6" 在我运行的另一个独立脚本中: if($pos = strpos($test,' ') !== false) { $test = substr($test,0,strpos($test,'

在CentOS上使用PHP5.3.10进行测试

在脚本运行中:

$test = "62 3/4";

if($pos = strpos($test,' ') !== false) {
  $test= substr($test,0,$pos); // use $pos
}
// $test is "6"
在我运行的另一个独立脚本中:

if($pos = strpos($test,' ') !== false) {
  $test = substr($test,0,strpos($test,' ')); // redo substr calculation
}
// $test is "62"

$pos应该是2(第三个字符是一个空格,从零开始,0,1,2),所以$test应该是“62”,没有?

运算符优先级<代码>==位于
=
之前,因此测试有效地变得

if($pos = (strpos($test,' ') !== false))
它将计算为true或false,而不是字符串位置

始终使用显式参数:

if(($pos = strpos($test,' ') !== false)

运算符优先<代码>==位于
=
之前,因此测试有效地变得

if($pos = (strpos($test,' ') !== false))
它将计算为true或false,而不是字符串位置

始终使用显式参数:

if(($pos = strpos($test,' ') !== false)
你想要

if( ($pos = substr($test, ' ')) !== false ) {
    // ...
}
请参见所需的

if( ($pos = substr($test, ' ')) !== false ) {
    // ...
}

参见

< P>也考虑在第二个IF中,变量$test的值已经被第一个:$test=SUBR($test,0,$POS)改变了;

< P>也可以考虑,在第二个IF中,变量$test的值已经被第一个:$test=SUBR($test,0,$POS)所改变;p> 最好使用$test=“62 3/4”;instaed$test=“62.75”。???使用62.75当然更好,但我只是想处理一些通过excel导入的坏数据。62比6好,但不如63或62.75好最好使用$test=“62 3/4”;instaed$test=“62.75”。???使用62.75当然更好,但我只是想处理一些通过excel导入的坏数据。62比6好,但不如63或62.75好好的,但它们并不是一起运行的。我先跑了一个,然后跑了另一个。好的,但它们实际上不是一起跑的。我跑了一个,然后是另一个。