массивы — информация о назначении переменной php

Вы можете мне помочь?
Есть ли кто-нибудь, кто может объяснить смысл этой строки в php-коде?

$options = ($options ?: array()) + $this->options;

Спасибо

1

Решение

Это эквивалентно этому:

if (!$options)
$options = array();

$options = $options + $this->options;

?: является троичным оператором. Если $options возвращает значение true, возвращается, в противном случае возвращается пустой массив.

+operator заданные два массива создают новый массив, объединяя их

0

Другие решения

Короче:

Создать массив $options объединяя $this->options массив в $options,

$options ?: array()

Если $options является truthy (предположительно, если он существует и не существует false) это вернет $options значение как есть, в противном случае он вернет пустой массив. Это сокращенный синтаксис для:

$options ? $options : array()

Таким образом, результатом этого является массив. На это $this->options массив добавляется через +, + оператор объединения массивов добавляет любые ключи справа налево, которых там еще нет.

Таким образом, результат является безопасным типом (в случае $options не является массивом) слияние двух массивов опций. Обратите внимание, что «безопасный тип» является относительным, если $options является ли число, объект или что-то еще, это все равно вызовет ошибку; но мы будем считать $options может быть либо false или же null или array на данный момент, так что, вероятно, все в порядке, как предполагалось.

0

По вопросам рекламы [email protected]