我遇到了一些看起来像这样的示例代码:
$form['#submit'][] = 'annotate_admin_settings_submit';
为什么['#submit']之后的一个括号是空的,里面什么都没有?这意味着什么?谁能举个例子?通常(根据我的理解,可能是错误的)是数组有键,在这种情况下,$ form数组键'#submit'等于'annotate_admin_settings_submit'但是第二组括号的处理是什么。我见过一个数组看起来像的例子:
$form['actions']['#type'] = 'actions';
我知道这是关于php的一个非常基本的问题,但我在学习Drupal时遇到了这个问题,所以希望Drupal社区中的某个人可以澄清这个我正在痴迷的问题。
答案 0 :(得分:5)
当您说$form['actions']['#type'] = 'actions'
时,它会为$form['actions']['#type']
分配一个值,但当您说$form['#submit'][] = 'annotate_admin_settings_submit'
时,如果$form['#submit']
是一个数组,则会附加'annotate_admin_settings_submit'
到它的末尾,如果它是空的,它将是一个包含一个'annotate_admin_settings_submit'
单个元素的数组。
答案 1 :(得分:3)
空括号表示当字符串添加到数组时,php会自动为该条目生成一个键,而不是在填充数组时在括号中指定。
因此$form['#submit'][] = 'annotate_admin_settings_submit';
与$form['#submit'][0] = 'annotate_admin_settings_submit';
相同,如果它是您第一次这样做的话。
下次将是$form['#submit'][1] = 'annotate_admin_settings_submit';
等等。
答案 2 :(得分:1)
空括号将自动增量索引添加到数组。新索引将是最后一个索引的+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