PHP()和[]之间的区别

Mr.*_*Web 135 php arrays syntax square-bracket

我正在编写一个PHP应用程序,我想确保它没有错误.

原始代码:

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

echo form_input($data);
?>
Run Code Online (Sandbox Code Playgroud)

以下工作是否会出现错误或由于某种原因不推荐?

<?= form_input(['name' => 'test', 'id' => 'theID']); ?>
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?

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

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

The*_*pha 209

[]PHP> = 5.4支持以下内容:

['name' => 'test', 'id' => 'theID']
Run Code Online (Sandbox Code Playgroud)

这只是一个简短的语法,在PHP <5.4中它不起作用.

  • @CooPer,不,除非你算一下打字长度. (26认同)
  • 我想要一个引用并找到这个 - http://php.net/manual/en/language.types.array.php - "从PHP 5.4开始,您还可以使用短数组语法,它将array()替换为[] ". (6认同)
  • @Alberto,仅支持PHP> = 5.4.点击此处:http://3v4l.org/VeRbj (5认同)
  • 你有什么不同吗? (3认同)
  • @Prof83,您可以使用 `$data = new stdClass();$data-&gt;someProp = 'someValue';` 使用 `PHP` 标准类和 `$obj = (object) ['foo'=&gt;'bar', 'baz'=&gt;'biz'];` 将数组(使用显式类型转换)转换为对象(stdClass),但关于“{}”,它可以在将来实现,但不确定:-) (2认同)

Dav*_*tor 13

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

  • @TheAlpha好,即使在今天,我也很好奇是否存在性能差异 (2认同)
  • 由于内存使用涉及多层缓存和优化,因此很难测量 PHP 中的内存使用情况。准确的测量需要找出如何禁用所有这些优化(如果可能的话),或者测量比较一次的两种情况并丢弃结果(这将显示人为的高内存使用率),然后交替测量两种情况几次并取平均值每种情况的测量值。[] 和 array() 之间的唯一区别在于语法,因为 [] 是 array() 的缩写。 (2认同)
  • 如果担心 `array(..)` 和 `[..]` 之间的性能差异,您应该使用不同的语言......只是说 (2认同)

Md.*_*rik 6

如果您使用的是 5.3 或以前的版本,则不能将其[]用作数组和关联数组。如果您使用 5.4 或更高版本的 PHP,那么您可以使用array()[]来创建数组、关联数组甚至多维数组。