【问题标题】:PHP arrays... What is/are the meaning(s) of an empty bracket?PHP数组...空括号的含义是什么?
【发布时间】:2013-12-20 17:36:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 那仍然是array 附加。在这种情况下,pushes an entry 只是一个子数组。
  • 哦,所以它本质上是将'annotate_admin_settings_submit'放在$form数组的末尾?
  • 既然您知道[] 的含义,请注意将这些元素添加到#submit 意味着您要求Drupal 执行该功能除了当前的功能。如果您不想删除现有的提交处理程序但要进一步处理表单值,那么您就是这样做的。
  • 非常感谢 Ayesh 的补充信息。

标签: php arrays drupal drupal-7


【解决方案1】:

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

【讨论】:

  • 非常感谢!这就是其他人(mario 和 UnLoCo)在我的问题下方的 cmets 中所说的。我希望有人会把它变成答案而不是评论:)。谢谢。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    空括号将自动递增索引添加到数组。新索引将比上一个索引 +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
    

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 2012-03-01
      • 2014-08-20
      • 2016-03-12
      • 2013-03-11
      • 2020-06-14
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多