Php 如果数组元素未定义,则设置null(默认值)
我有一个函数来填充一个对象Php 如果数组元素未定义,则设置null(默认值),php,Php,我有一个函数来填充一个对象 public static function populateObj($data) { $obj = new Obj(); $obj->setVal1($data['val1']); $obj->setVal2($data['val2']); $obj->setId($data['id']); return $obj; } 如果所有值都与参数$data一起给出,则其工作正常。但如果缺少某个内容,则会抛出一个错
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中,您可以使用:
这也许是最快(输入的单词最少)的方法。如果值得的话,另一个可能更快的方法是使用
默认值创建类和构造函数array\u pad()
和array\u merge()
可能也值得一看,具体取决于您的应用程序。在PHP7+中,您可以使用?
a.k.a空合并
看一个例子
(在PHP7中)添加了空合并运算符(??),作为需要将三元与isset()结合使用的常见情况下的语法糖。如果第一个操作数存在且不为空,则返回第一个操作数;否则返回第二个操作数
应该是!空($data['val1'])$obj->setVal1($data['val1']):$obj->setVal1(null)
或isset($data['val1'])$obj->setVal1($data['val1']):$obj->setVal1(null)
$obj->setVal1($data['val1'] ?? null);
$obj->setVal1($data['val1']??null);
$obj->setVal2($data['val2']??null);
$obj->setId($data['id']??null);