Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果数组元素未定义,则设置null(默认值)_Php - Fatal编程技术网

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);