在CentOS上的PHP 5.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”,不是吗?
答案 0 :(得分:3)
运营商优先权! !==
出现在=
之前,因此测试有效地变为
if($pos = (strpos($test,' ') !== false))
将评估为true或false,而不是字符串位置。
始终使用明确的parens:
if(($pos = strpos($test,' ') !== false)
答案 1 :(得分:1)
答案 2 :(得分:0)
还要考虑在你的第二个if中,变量$ test的值已经被第一个改变了:$ test = substr($ test,0,$ pos);