function meth()
{
$a=$_POST["user"];
return isset($a) ? (is_array($a) ? $a : trim($a) : NULL;
}
麻烦解释下PHP里面这个三元运算符什么意思啊?
{
$a=$_POST["user"];
return isset($a) ? (is_array($a) ? $a : trim($a) : NULL;
}
麻烦解释下PHP里面这个三元运算符什么意思啊?
{
$a=$_POST["user"]; $rtval = '';
if(isset($a)){
if(is_array($a)){
$rtval = $a;
}else{
$rtval = trim();
}
}else{
$rtval = NULL;
}
return $rtval;
}
if(isset($a)){
if ((is_array($a)){
return $a;
}else{
return trim($a);
}
}else{
return NULL;
}
举个例子 求两者大的那个
$a=0; $b =1;
echo $a > $b(条件) ? $a(如果条件成立):$b(如果不成立);
输出 1;
是错误的!应写作
isset($a) ? (is_array($a) ? $a : trim($a)) : NULL;
当条件成立时(这里是$a已定义)就返回红色的部分,否则返回 NULL
其中红色的部分为
如果 $a 是数组,则返回 $a,否则去掉 $a 两端的空白字符并返回但是在这个函数中,并不能达到预期的目的。任何情况下都不会返回 NULL
因为有 $a=$_POST["user"];
这时无论 $_POST["user"] 是否存在,$a 都会被赋值,也就是下面的 isset($a) 永远成立。
当 $a 值为 NULL(即$_POST["user"]不存在)时,会执行 trim($a),将返回一个空串,而不是 NULL
所以只需保留红色的部分就可以了
//装B写法
function meth()
{
$a=$_POST["user"];
return isset($a) ? (is_array($a) ? $a : trim($a) : NULL;
}//还原一下
function meth()
{
$a = $_POST["user"];
if( isset($a)){
if( is_array($a)) {
return $a;
}else {
return trim(a);
}
}else {
return null;
}
}简易简单的东西,简单点写,没必要折腾成那样。
第二个建议,函数里接收$_POST 参数,是很不人道的,函数应该做得更单纯些,就是对参数进行处理,保证参数全从入口得到。
第三个建议,就算要这样写,如果 不存在$_post['user']; 函数也挂了。
建议原函数更改为function meth()
{return isset($_POST["user"]) ? (is_array($_POST["user"]) ? $_POST["user"] : trim($_POST["user"]) : NULL;
}
return
isset($a) ? (is_array($a) ? $a : trim($a)) : NULL;
你先算出红色部分,这里会得到一个结果,然后再进行第二次运算
至于return 他是将第二次运算(最后的结果)作为函数的返回值。
关键是要分段运算啊!