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

问题描述 投票:3回答:3

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

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

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

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

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

php arrays drupal drupal-7
3个回答
5
投票

当你说$form['actions']['#type'] = 'actions'时,它为$form['actions']['#type']指定一个值,但是当你说$form['#submit'][] = 'annotate_admin_settings_submit'时,如果$form['#submit']是一个数组,它会将'annotate_admin_settings_submit'附加到它的末尾,如果它是空的,它将是一个包含单个元素的数组,即'annotate_admin_settings_submit'


4
投票

空括号表示当字符串添加到数组时,php将自动生成条目的键,而不是在填充数组时在括号中指定。所以$form['#submit'][] = 'annotate_admin_settings_submit';$form['#submit'][0] = 'annotate_admin_settings_submit';是一回事,如果这是你第一次这样做的话。下次将是$form['#submit'][1] = 'annotate_admin_settings_submit';


2
投票

空括号为数组添加自动增量索引。新索引将是最后一个索引的+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
© www.soinside.com 2019 - 2024. All rights reserved.