如果有条件,则在内部指定php变量
以下两个如果有条件,则在内部指定php变量,php,if-statement,Php,If Statement,以下两个ifs产生了不同的结果(第一个ifechos hi,第二个没有),为什么?为什么$t上的变量赋值不起作用?这是由于$t在if条件中的本地作用域造成的吗 if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"]) && !empty($t)){ echo 'hi' } if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"]
if
s产生了不同的结果(第一个if
echos hi,第二个没有),为什么?为什么$t
上的变量赋值不起作用?这是由于$t
在if
条件中的本地作用域造成的吗
if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"]) && !empty($t)){
echo 'hi'
}
if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"])){
if(!empty($t))echo 'hi'
}
&&
的值大于=
,因此第一个表达式的计算结果为:
isset($_REQUEST['test']) && $t = (trim($_REQUEST['test']) && !empty($t))
自从<代码>!空($t)在将任何内容分配给$t
之前进行计算,表达式为false
。您可以通过显式设置括号或使用不太麻烦的方式编写来解决此问题:
if (isset($_REQUEST['test']) && trim($_REQUEST['test'])) {
echo 'hi';
}
trim($\u REQUEST['test'])
将自行计算为true
或false
,无需empty
。如果以后确实需要trim
med值,可以这样保存:
if (isset($_REQUEST['test']) && ($t = trim($_REQUEST['test']))) {
echo 'hi';
}
如果您在代码中做了如下小修改:
if(isset($_REQUEST["test"]) && ($t=trim($_REQUEST["test"])) && !empty($t)){
echo '1: hi<br/>';
}
if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"])){
if(!empty($t))
echo '2: hi<br/>';
}
if(设置($请求[“测试])&&($t=trim($请求[“测试]))&&!空($t)){
回声“1:hi
”;
}
如果(isset($请求[“测试”])和&$t=trim($请求[“测试”])){
如果(!空($t))
回声“2:hi
”;
}
然后将同时打印1:hi
和2:hi
。第一个$t赋值的括号中有差异。?