Массивы PHP... Что означает/является значение пустой скобки? - программирование

Массивы PHP... Что означает/является значение пустой скобки?

Я столкнулся с некоторым примером кода, который выглядит так:

$form['#submit'][] = 'annotate_admin_settings_submit';

Почему существует скобка после ['#submit'], которая не содержит ничего внутри? Что это значит? Может ли кто-нибудь дать мне пример? Обычно (из моего понимания, которое, вероятно, неверно) заключается в том, что массивы имеют ключи, и в этом случае ключ массива $form '#submit' равен 'annotate_admin_settings_submit', но что такое сделка со вторым набором скобок. Я видел примеры, где может выглядеть массив:

$form['actions']['#type'] = 'actions';

Я знаю, что это очень простой вопрос о php в целом, но я столкнулся с этим вопросом, изучая Drupal, поэтому, надеюсь, кто-то из сообщества Drupal может прояснить этот вопрос, который я одержим.

4b9b3361

Ответ 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'; и т.д.