PHP中的秋季变量赋值?

时间:2012-06-16 00:22:28

标签: php

  

可能重复:
  Coalesce function for PHP?

我不确定这通常叫什么,但我希望这个标题能够很好地传达。我所拥有的是一些变量,其中一些变量可能为空。

我想这样做:

$a = $b || $c || $d;

其中$ a最终= =第一个非null变量。

3 个答案:

答案 0 :(得分:4)

据我所知,PHP不像JavaScript那样支持它。

你可以这样做:

$a = $b ? $b : ($c ? $c : $d);

更通用的解决方案:

function fallthrough($arr) {
    //$arr should be an array of possible values. The first non-null value is returned
    do $a = array_shift($arr);
    while($a === null && $arr);
    return $a;
}

答案 1 :(得分:3)

<?php
$a = 0;
$b = false;
$c = true; //should become this
$d = '1';
$e =  $a ?: $b ?: $c ?: $d;
var_dump($e);
//bool(true)

//should be '1' if order is different
$e =  $a ?: $b ?: $d ?: $c;
var_dump($e);
//string(1) "1"

...但是?:有点新,你会混淆你的同事/同事们。

答案 2 :(得分:0)

我认为这不可行。我认为你必须使用其他更费力的方式。即创建一个变量数组,迭代它直到找到一个非null值并打破循环,如下所示:

$vars = array("b" => $b, "c" => $c, "d" => $d);

foreach($vars as $var) {
   if($var != null) {
      $a = $var;
      break;
   }
}

嗯,就像这里的其他一些答案所说的那样,你可以使用写作的简写方式,但编写可读代码也很重要。上面的代码非常易读。