PHP数组......空括号的含义是什么?

时间:2013-12-20 17:36:30

标签: php arrays drupal drupal-7

我遇到了一些看起来像这样的示例代码:

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

为什么['#submit']之后的一个括号是空的,里面什么都没有?这意味着什么?谁能举个例子?通常(根据我的理解,可能是错误的)是数组有键,在这种情况下,$ form数组键'#submit'等于'annotate_admin_settings_submit'但是第二组括号的处理是什么。我见过一个数组看起来像的例子:

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

我知道这是关于php的一个非常基本的问题,但我在学习Drupal时遇到了这个问题,所以希望Drupal社区中的某个人可以澄清这个我正在痴迷的问题。

3 个答案:

答案 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