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

Sam*_*ler 2 php

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

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

如果使用参数给出所有值,则$data它可以正常工作.但如果缺少某些东西,则会抛出错误.
是否有更短,更容易或更好的方法设置null为默认值:

$data['val1'] ? $obj->setVal1($data['val1']) : $obj->setVal1(null);
...
Run Code Online (Sandbox Code Playgroud)

Abr*_*ver 5

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

$data = array_merge(['val1'=>null, 'val2'=>null, 'id'=>null], $data);
Run Code Online (Sandbox Code Playgroud)

在PHP> = 7.0中,您可以使用Null Coalescing Operator:

$obj->setVal1($data['val1'] ?? null);
Run Code Online (Sandbox Code Playgroud)