PHP массивы... Что означает (а) значение (я) пустой скобки?
Я наткнулся на пример кода, который выглядит следующим образом:
$form['#submit'][] = 'annotate_admin_settings_submit';
Почему после ['#submit'] есть квадратная скобка, в которой ничего нет? Что это значит? Кто-нибудь может дать мне пример? Обычно (насколько я понимаю, что, вероятно, неправильно), у массивов есть ключи, и в этом случае ключ массива $form '#submit' равен 'annotate_admin_settings_submit', но как обстоят дела со вторым набором скобок. Я видел примеры, где массив может выглядеть так:
$form['actions']['#type'] = 'actions';
Я знаю, что это очень простой вопрос о php в целом, но я столкнулся с этим вопросом, изучая Drupal, так что, надеюсь, кто-то из сообщества Drupal сможет прояснить этот вопрос, которым я зациклен.
3 ответа
Когда ты сказал $form['actions']['#type'] = 'actions'
присваивает значение $form['actions']['#type']
, но когда вы говорите $form['#submit'][] = 'annotate_admin_settings_submit';
, если $form['#submit']
это массив, он добавляет 'annotate_admin_settings_submit'
до конца этого, и если он пуст, это будет массив с одним единственным элементом, который 'annotate_admin_settings_submit'
,
Пустые скобки означают, что когда строка добавляется в массив, php автоматически сгенерирует ключ для записи, а не будет указан в скобках при заполнении массива. Так $form['#submit'][] = 'annotate_admin_settings_submit';
это то же самое, что $form['#submit'][0] = 'annotate_admin_settings_submit';
если вы впервые это делаете. В следующий раз это будет $form['#submit'][1] = 'annotate_admin_settings_submit';
, так далее.
Пустая скобка добавляет в массив индекс автоинкремента. Новый индекс будет +1 к последнему индексу.
Пожалуйста, проверьте этот пример.
$form['#submit'][0] = 'zero';
$form['#submit'][1] = 'One';
$form['#submit'][] = 'Two'; // this will be considered as $form['#submit'][2] = 'Two';
$form['#submit'][4] = 'Four';
$form['#submit'][] = 'Four'; //this will be considered as $form['#submit'][5] = 'Four'; since its adds 4(last index)+1