If语句中的PHP变量赋值
检查函数的返回值的通常做法是运行函数并将值存储在变量中,然后测试该变量。这是使用该strstr()函数的过程示例。
$string = 'abcde'; $var = strstr($string, 'f'); if ( false !== $var ) { var_dump($var); } else { var_dump($var); }
该代码将输出“bool(false)”,因为这是该strstr()函数的返回值。
还有一种在单个if语句中编写相同代码的方法。下面的示例在一行代码中分配变量并检查返回值。
$string = 'abcde'; if ( false !== $var = strstr($string, 'f') ) { var_dump($var); } else { var_dump($var); }
该代码将bool(false)再次输出“”,因为它具有与上一个示例相同的功能。
这样分配变量存在一个问题,那就是只能执行一个操作。如果您一次尝试分配多个变量,则会发现除最终变量以外的所有内容都是布尔比较的结果。以下面的示例为例,该示例使用与其他示例相同的$string变量。
if ( false !== $var1 = strstr($string, 'a') && false !== $var2 = strstr($string, 'b') && false !== $var3 = strstr($string, 'c') ) { var_dump($var1, $var2, $var3); }
此代码的输出如下:
bool(true)bool(true)string(3)"cde"
前两个比较结果为true,因此为$var1和$var2分配了布尔值true。最终比较是唯一分配了期望值的比较。这可能是PHP中的错误,但是由于这是分配变量的非标准方式,因此我认为没有多少人遇到过这种情况。