Массивы PHP... Что означает/является значение пустой скобки?
Я столкнулся с некоторым примером кода, который выглядит так:
$form['#submit'][] = 'annotate_admin_settings_submit';
Почему существует скобка после ['#submit'], которая не содержит ничего внутри? Что это значит? Может ли кто-нибудь дать мне пример? Обычно (из моего понимания, которое, вероятно, неверно) заключается в том, что массивы имеют ключи, и в этом случае ключ массива $form '#submit' равен 'annotate_admin_settings_submit', но что такое сделка со вторым набором скобок. Я видел примеры, где может выглядеть массив:
$form['actions']['#type'] = 'actions';
Я знаю, что это очень простой вопрос о php в целом, но я столкнулся с этим вопросом, изучая Drupal, поэтому, надеюсь, кто-то из сообщества Drupal может прояснить этот вопрос, который я одержим.
Ответы
Ответ 1
Когда вы говорите $form['actions']['#type'] = 'actions'
, он присваивает значение $form['actions']['#type']
, но когда вы говорите $form['#submit'][] = 'annotate_admin_settings_submit';
, если $form['#submit']
- это массив, он добавляет 'annotate_admin_settings_submit'
к концу, а если он пуст, это будет массив с одним единственным элементом, который 'annotate_admin_settings_submit'
.
Ответ 2
Пустые скобки означают, что когда строка добавляется в массив, php автоматически генерирует ключ для записи, а не указывается в скобках при заполнении массива.
Таким образом, $form['#submit'][] = 'annotate_admin_settings_submit';
- это то же самое, что и $form['#submit'][0] = 'annotate_admin_settings_submit';
, если оно выполняется в первый раз.
В следующий раз это будет $form['#submit'][1] = 'annotate_admin_settings_submit';
и т.д.