在 PHP 中使用这样的结构是否安全:
$文件名 = $文件['文件名1'] || $file['文件名2'];
我有 JS 背景,使用起来很安全,因为我们可以信任 true/false 值。然而,我的同事习惯于利用 isset
进行构造:
$文件名 = '文件名'. (isset($file['filename2']) ? '2' : '1');
对我来说这似乎有点冗长。
我找到了an article on phabricator.com它概述了 PHP 中不同的 true/falsey 值并提供了此表:
VALUE if() empty() isset()
null false true false
0 false true true
0.0 false true true
"0" false true true
"" false true true
false false true true
array() false true true
EVERYTHING ELSE true false true
如果有人就此事向我提供见解,我将不胜感激。
最佳答案
第一件事:
$filename = $file['filename1'] || $file['filename2']; //incorrect syntax
应该是
$filename = $file['filename1'] || $filename = $file['filename2'];//depending on the condition
<小时/>
第二件事:
isset($file['filename2']) ? '2' : '1';
这是取代冗长代码的简写。
相同的代码可以写成:
if(isset($file['filename2']){
$filename='filename2';
}else{
$filename='filename1';
}
所以,一行可以写4行代码。这并不冗长。这就是智能编码。
<小时/>第三件事:
这是实现这一目标的理想方式。
return isset($file['filename2'])?$file['filename2']:$file['filename1'];
理解示例:
echo (age>18)?"where is my beer":"you are Underage!!!"; //codition:true:false
关于PHP 智能 || (OR) 运算符就像 JavaScript 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18531707/