在JavaScript中,我可以这样做:
var somevar = {
propertyTwo : false,
propertyThree : "hello!"
}
var test = somevar.propertyOne || somevar.propertyTwo || somevar.propertyThree
alert(test); //displays "hello!"在PHP中有没有类似的功能?在网上找不到任何东西。
我试过了,但是PHP只是把它当作一个比较,echo的1 (true)
$somevar = array(
'propertyTwo' => false,
'propertyThree' => "hello!"
);
$test = $somevar['propertyOne'] || $somevar['propertyTwo'] || $somevar['propertyThree'];
echo $test; //displays '1'如果没有,也没什么大不了的,但我想,有了php 5.x中提供的所有花哨功能,就会有某种形式的简写方法,可以将一系列值中的第一个true值赋给这样的单个变量。
我想我可以写一个函数。
编辑:
正如我所怀疑的那样,PHP没有同样的怪癖。
我写的快速函数
function assign_list($list){
foreach($list as $v)
if(isset($v) && $v) return $v;
return false;
}只需向它传递一组内容
发布于 2013-07-04 01:54:54
下面的代码可以在PHP >= 5.3中运行,但您仍然会收到一个Notice Error,因为没有定义propertyOne。
<?php
$somevar = array(
'propertyTwo' => false,
'propertyThree' => "hello!"
);
$test = $somevar['propertyOne'] ?: $somevar['propertyTwo'] ?: $somevar['propertyThree'];
echo $test; //displays 'hello!'不过,您可以通过抑制变量来解决此问题,但这是极力不推荐使用的
$test = @$somevar['propertyOne'] ?: @$somevar['propertyTwo'] ?: @$somevar['propertyThree'];发布于 2013-07-04 02:07:49
这在PHP中不起作用,原因如下:
$somevar['propertyOne'] = false;
$somevar['propertyTwo'] = true;
$test = $somevar['propertyOne'] || $somevar['propertyTwo'];想象一下,在if语句中输入该查询:
if( $somevar['propertyOne'] || $somevar['propertyTwo'] ){ ... }如果任一变量为true,则返回true (计算结果为1)。
现在,如果我们将所有变量都设为false
$somevar['propertyOne'] = false;
$somevar['propertyTwo'] = false;
$test = $somevar['propertyOne'] || $somevar['propertyTwo'];该变量返回false (计算结果为0)。
我们可以做的另一件事是:
$somevar['propertyOne'] = true;
$somevar['propertyTwo'] = true;
$test = $somevar['propertyOne'] && $somevar['propertyTwo'];这将返回true (计算结果为1),因为两个变量都满足条件。
这意味着我们可以在PHP中做这样的事情:
$test = $somevar['propertyOne'] || $somevar['propertyTwo'];
if($test){ ... }PHP,DR:在中,您将表达式的结果存储到一个变量中,而不对任何内容进行任何验证。
https://stackoverflow.com/questions/17454884
复制相似问题