在JavaScript中,我习惯于使用以下后备评估
var width = parseInt(e.style.width) || e.offsetWidth() || 480这意味着width将获得最后一个非零(非null...)值,但是在php中我不能写
$a = $_GET['id'] || 1;我不得不这样写
$a = $_GET['id']?$_GET['id']:1;这很糟糕,因为$_GET['id']被计算了两次
有什么建议吗?
发布于 2011-02-22 01:27:27
如果你使用的是PHP 5.3,你可以简单地这样做:
$a = $_GET['id'] ?: 1;如PHP手册中所述:
从PHP5.3开始,可以省略三元运算符的中间部分。Expression expr1 ?:如果expr1计算结果为TRUE,则expr3返回expr1,否则返回expr3。
如果你没有PHP5.3或更高版本,你将不得不使用Sarfraz的建议(或者更好,delphist的建议)。但是,在较大的应用程序中,我倾向于将请求变量包装为可以在检索请求的函数的参数中指定默认值的方式。这样做的优点是更清晰(更容易理解),而且如果索引不存在于$_GET变量中,它不会生成警告,因为我可以使用isset之类的东西来检查数组索引是否存在。我最终得到了类似这样的结果:
发布于 2011-02-22 01:26:46
这会更好
$a = isset($_GET['id']) ? $_GET['id'] : 1;发布于 2011-02-22 01:25:09
不幸的是,PHP不支持这种语法。你能做的最好的就是像你的例子一样使用三元运算符:
$a = $_GET['id'] ? $_GET['id'] : 1;对于等价的东西,脑海中出现的唯一选择是使用Switch条件。
https://stackoverflow.com/questions/5069093
复制相似问题