我想从另一组变量中分配一个变量,它是第一个非null元素。很像ruby ||=
中的条件赋值。例如:
<?php
$result = null;
$possibleValue1 = null;
// $possibleValue2 not defined
$possibleValue3 = 'value3';
if (isset($possibleValue1) && !is_null($possibleValue1)) {
$result = $possibleValue1;
} else if (isset($possibleValue2) && !is_null($possibleValue2)) {
$result = $possibleValue2;
} else if (isset($possibleValue3) && !is_null($possibleValue3)) {
$result = $possibleValue3;
}
有没有办法在php中这样做,就像这样(如果可能的话,我想避免创建一个函数,只使用php库中的函数):
$result = firstNotNull(array($possibleValue1, $possibleValue2, $possibleValue3));
答案 0 :(得分:1)
我认为最简短的方法是:
$result = current(array_filter(array($possibleValue1, $possibleValue2, $possibleValue3)));
答案 1 :(得分:0)
如果明确设置了所有$possibleValues
:
$possibleValues = array($possibleValue1, $possibleValue2, ...);
如果可能未设置:
$possibleValues = compact('possibleValue1', 'possibleValue2', ...);
然后:
$result = reset(array_filter($possibleValues, function ($i) { return $i !== null; }));
答案 2 :(得分:0)
不知道PHP中的这样一个函数,但为什么不创建自己的函数?
function getFirstNotNullValue($values = array()) {
foreach($values as $val)
if($val) return $val;
return false;
}