获取已定义且不为null的数组的第一个元素

时间:2012-11-26 13:12:45

标签: php variable-assignment

我想从另一组变量中分配一个变量,它是第一个非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));

3 个答案:

答案 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;
}