@IdFox

PHP: Как задать элемент массива без лишнего кода?

День добрый
Есть кусок кода для SELECT поля (YII2 фреймворк)

->dropDownList($structure_enum, [
    'class' => 'form__select',
    'style' => 'width: 100%;',
])


Т.е грубо говоря есть массив данных
Как в этот массив передать или нет еще один ключ по условию, не городя лишнего кода выше
Т.е написать что то вроде

->dropDownList($structure_enum, [
    'class' => 'form__select',
    'style' => 'width: 100%;',
    $structure_strict ? 'disabled' => 'disabled' : '',
])

Код само собой не рабочий, но для примера понятен

P.S Просьба в ответах не предлагать вариант типа
$a = [
    'class' => 'form__select',
    'style' => 'width: 100%;',
];

if ($structure_strict) $a ['disabled'] = 'disabled';
.....
->dropDownList($structure_enum, $a)

Интересует именно вопрос краткости записи

P.S
Всем спасибо за ответы
В общем или через array_merge или через сложение массивов
  • Вопрос задан
  • 321 просмотр
Решения вопроса 2
alsopub
@alsopub
Как вариант склеивать массивы:
->dropDownList($structure_enum, array_merge(
  [ 'class' => 'form__select', 'style' => 'width: 100%;' ],
  ($structure_strict) ? [ 'disabled' => 'disabled' ] : []
))
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
В CleverStyle Framework можно и 'disabled' => $structure_strict, и даже $structure_strict ? 'disabled' : false, если Yii2 этого не позволяет - то можете написать разработчикам/реализовать самостоятельно и отправить PR, должно быть достаточно тривиально в плане реализации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abler98
@abler98
Software Engineer
<?php

->dropDownList($structure_enum, array_filter([
    'class' => 'form__select',
    'style' => 'width: 100%;',
    'disabled' => $structure_strict ? 'disabled' : false,
]));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы