PHP array()和[]之间的区别


148

我正在编写一个PHP应用程序,我想确保它不会出现错误。

原始代码:

<?php
$data = array('name' => 'test',
              'id'   => 'theID');

echo form_input($data);
?>

以下内容可以正常运行吗?还是不建议出于某些原因?

<?= form_input(['name' => 'test', 'id' => 'theID']); ?>

有什么区别吗?

我再次查看了有关数据array()以及[]PHP.net中带有方括号的短数组方法,但不确定。

而且,简短的php标签<?= ?>是否适合回显?有版本问题吗?(提供在php.ini中启用)


1
短数组语法是PHP 5.4中引入的,没有区别,并且不会删除旧方法,因此可以安全使用。短标签通常会皱眉,我不会使用它们。
JimL

2
Tks,关于不使用php短标签的任何参考/原因?
Mr.Web

7
尽管<?=?>实际上并不是短标签,但标准短标签afaik并没有禁用它们,因此它们对于简单的回显应该是合适的。
亚历山大·瓦维克


1
有趣的阅​​读<?=?>标签。根据其中一项评论“
拉斯莫斯·勒多夫

Answers:


223

[]PHP> = 5.4支持以下功能:

['name' => 'test', 'id' => 'theID']

这只是一个短语法,在PHP <5.4中将不起作用


似乎5.3.24也支持此语法。(无法直接确认)
Alberto 2014年

3
你有什么区别吗?
Ali Akbar Azizi 2014年

26
@CooPer,否,除非您计算输入长度。
Alpha

7
我想要一个参考,并找到了它-php.net/manual/en/language.types.array.php- “从PHP 5.4开始,您还可以使用短数组语法,该语法将array()替换为[]。”
mrwaim

1
@ Prof83,您可以使用$data = new stdClass();$data->someProp = 'someValue';使用PHP标准类和$obj = (object) ['foo'=>'bar', 'baz'=>'biz'];一个数组(使用显式类型转换)转换为对象(stdClass的),但有关{},它可能在未来实现,但不知道寿:-)
阿尔法

19

截至2019年,距[]添加语法已有7年了。array()我认为,除了旧的遗留程序以外,它已经足够长的时间了。


3
@TheAlpha很好,即使在今天,我也很好奇是否存在性能差异
Cid

你测量了吗?我认为它们只是替代语法,这是不可测量的。
David Spector

6

如果您使用的是5.3或更早版本,则不能[]同时用作数组和关联数组。如果使用的是5.4或更高版本的PHP,则可以使用array()[]创建数组,关联数组甚至多维数组。



-12

使用php 7.2,对我来说似乎[[我是一个数组] {我是一个数组似乎正常工作}。{}和之间的区别是[]。我的密码

<p>
  <label for="post_category"> Cat 1 </label>
  <input type="checkbox" name="post_category{first}" value="cat1">
  <br />
  <label for="post_category{second}"> Cat 2 </label>
  <input type="checkbox" name="post_category" value="cat2">
</p>

15
PHP在哪里?您正在编写HTML。
domdambrogia

1
另外,花括号不适用于OP询问的情况。您无法使用大括号创建数组,只能访问数组元素(自v5.4至今-v7.3)。
Aydin4ik '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.