PHP 智能 || (OR) 运算符就像 JavaScript 中一样

标签 php javascript types

在 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/

相关文章:

php - Woocommerce,根据运输类别隐藏运输方式

javascript - 将 &lt;script&gt; 标记应用于页面的唯一部分

arrays - 具有指定维度的数组的类型别名

typescript - Haskell 在 Typescript 中的新类型?

php - 我如何对 php mysql 中两个或多个表的字段值求和

javascript - 如何使用 .htaccess 按文件名而不是扩展名缓存文件

php - 如何使我的搜索栏链接到页面

javascript - 点击事件: switch statement not working

javascript - 如何在 jasmine 中测试 $http 服务

function - 如何通过反射将函数断言为类型?