如果未定义数组元素,则设置 null(默认值)



我有一个填充对象的函数。

public static function populateObj($data) {
    $obj = new Obj();
    $obj->setVal1($data['val1']);
    $obj->setVal2($data['val2']);
    $obj->setId($data['id']);
    return $obj;
}

如果所有值都带有参数$data则工作正常。但是,如果缺少某些内容,则会引发错误。
有没有比这更短、更简单或更好的方法来null设置为默认值:

$data['val1'] ? $obj->setVal1($data['val1']) : $obj->setVal1(null);
...

您可以与默认数组合并,然后$data将包含所有这些键:

$data = array_merge(['val1'=>null, 'val2'=>null, 'id'=>null], $data);

在 PHP>= 7.0 中,您可以使用空合并运算符:

$obj->setVal1($data['val1'] ?? null);

这可能是最快(键入最少的单词(的方法。 另一个可能更快,如果值得的话,是用default values创建一个类和一个构造函数。 带array_merge() array_pad()也可能值得一看,具体取决于您的应用。

在 PHP 7+ 中,您可以使用?? 又名空合并

$obj->setVal1($data['val1']??null);
$obj->setVal2($data['val2']??null);
$obj->setId($data['id']??null);

在此处查看示例

空合并运算符 (??( 已被添加(在 PHP7 中(作为语法糖,用于需要将三元与 isset(( 结合使用的常见情况。如果它存在且不是 NULL,则返回其第一个操作数;否则,它将返回其第二个操作数。

相关内容

  • 没有找到相关文章

最新更新