PHP 7.1中数组销毁操作的默认值

时间:2017-08-29 15:43:10

标签: php-7 php-7.1

有没有办法为没有指定索引的被破坏数组设置默认值?

与在ES6中破坏对象类似,如果传递的对象没有属性(在下面的示例中为name道具),则它将具有默认值:

const ({name = '', age}) => {
};

我目前正在销毁如下数组:

// Inside my class
public function __construct(array $props) {
    [ 'id' => $this->id, 'name' => $this->name ] = $props;
}

但是,我希望'id'是可选的,这样$this->id可以在没有传递0时将'id'作为默认值。

1 个答案:

答案 0 :(得分:0)

这对我有用:

<?php

class Ciao
{
    private $id = 666;

    public function __construct(array $props) {
        $props['id'] = $props['id'] ?? 666;
        [ 'id' => $this->id, 'name' => $this->name ] = $props;
    }
}


$ciao = new Ciao([
    'id' => 42,
    'name' => 'ciao',
]);
// $ciao::$id == 42


$ciao = new Ciao([
    'name' => 'ciao',
]);
// $ciao::$id == 666