0

我想分配一个变量,它是另一组变量中的第一个非空元素。很像 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));
4

3 回答 3

1

我认为最短的方法是:

 $result = current(array_filter(array($possibleValue1, $possibleValue2, $possibleValue3)));
于 2012-11-26T13:22:23.260 回答
0

如果一切$possibleValues都确定:

$possibleValues = array($possibleValue1, $possibleValue2, ...);

如果它们可能未设置:

$possibleValues = compact('possibleValue1', 'possibleValue2', ...);

然后:

$result = reset(array_filter($possibleValues, function ($i) { return $i !== null; }));
于 2012-11-26T13:15:32.603 回答
0

不知道 PHP 中有这样的函数,但为什么不自己创建呢?

function getFirstNotNullValue($values = array()) {
    foreach($values as $val)
        if($val) return $val;
    return false;
}
于 2012-11-26T13:16:36.100 回答