PHP 7 空合并运算符处的重复变量


Repeated Variable at PHP 7 Null Coalescing operator

看看这段代码:

$this->request->data['comments']['user_id'] = 
    $this->request->data['comments']['user_id'] ?? ‘value’;

我想检查某个变量是否为空,如果相同的变量为空,则将相同的变量设置为"值"。

因此,我在相等运算符之后重复相同的变量,这感觉不对。

所以我觉得我们需要另一个像??=类似于+=的运算符:

$this->request->data['comments']['user_id’] ??= ‘value’.

因此,如果 var 为 null,则将其设置为"值",否则保持不变。

我实现了这个运算符并为PHP7发出了拉取请求。目前它处于RFC阶段,如果它被接受,它将被合并到PHP版本7.x。

https://wiki.php.net/rfc/null_coalesce_equal_operator

只需为此创建一个实用程序函数:

function assignIfNotSet(&$variable, $value) {
    if (!isset($variable)) {
        $variable = $value;
    }
}

且仅当其值null或未设置时,它将为$variable分配一个值。

该函数通过引用使用传递变量 — 请参阅文档。

用法:

$x = "original value";
assignIfNotSet($x, "other value");
var_dump($x); // "original value"
$y = null;
assignIfNotSet($y, "other value");
var_dump($y); // "other value"
// assuming $z wasn't previously defined
assignIfNotSet($z, "other value");
var_dump($z); // "other value"

它也适用于数组项和对象属性。在您的情况下:

assignIfNotSet($this->request->data['comments']['user_id'], 'value');