PHP的数组()的缩写

时间:2009-09-29 23:45:25

标签: php arrays syntax performance syntactic-sugar

我不知道你怎么样,但我不太喜欢用PHP构建数组的方式。我有这种感觉,我过于频繁地使用array关键字,array($k => $v)或者例如鉴于地图的实用性,array($k1=>array($k2=>$v))太长了。 (而且,最近我学会了JS way of doing it,现在我真的很嫉妒)

我能想出的最好的解决方法是:

function a() { // array
  return func_get_args();
}

function h() { // hash
  $array=array();
  for($i=0; $i<func_num_args()-1; $i+=2) {
    $array[func_get_arg($i)]=func_get_arg($i+1);
  }
  return $array;
}

...但他们不允许使用=>运算符。

还有其他想法吗?

3 个答案:

答案 0 :(得分:8)

PHP 5.4开始,使用[]支持shorthand syntax for arrays。你的例子:

array($k => $v)
array($k1=>array($k2=>$v))

现在可以写成:

[$k => $v]
[$k1 => [$k2 => $v]]

答案 1 :(得分:3)

在PHP中声明数组没有简写语法。这是我希望看到的一个功能,但我非常怀疑它会发生。

PHP开发人员和PHP社区对此进行了很多讨论,但它从未实现过。如果您想在PHP维基上看到讨论如何展开,那么这是一个很好的起点:http://wiki.php.net/rfc/shortsyntaxforarrays

现在,您将不得不忍受输入一些额外的字符。

答案 2 :(得分:0)

使用Texter或任何体面的编辑器与模板/宏。 E.g:

[]+Tab ---> array({cursor})

如果您真的很痴迷,请创建一个json_decode宏来运行选择:

<?php var_export(json_decode(stream_get_contents(STDIN), true));

只是不要将JSON放在PHP代码中,因为你宁愿看JSON ......