为什么在 PHP 中不可能做类似的事情:
(Array(0))[0];
这只是为了争论,但它不允许访问匿名对象似乎很奇怪。 我必须做如下的事情:
$array = Array(0);
$array[0];
你知道为什么这是 PHP 的行为吗?
此语言功能尚未实现,但 将在 PHP 5.4 中出现。
我曾经读过一些关于此的详细内容,我很遗憾没有将其添加为书签,因为它非常有见地。 然而,这与
类似“因为在当前语句(行)完全执行(到达分号)之前,数组并不存在于内存中”
所以,基本上,您只是定义了数组 - 它实际上并没有创建并且可读/可访问,直到下一行。
我希望这在某种程度上准确地总结了我几个月前只模糊记得读过的内容。
我想简短的答案是:还没有人编码。我已经在 Python 和 Javascript 中使用(并且喜欢)该语法,但我们仍然等待 PHP。
主要原因是因为与Python和JavaScript等某些语言不同,
Array()
(或者实际上是array()
)不是一个对象,而是一种创建内置数据类型的语言构造。
内置数据类型本身也不是对象,并且 array()
构造不会返回对“对象”的引用,而是返回实际值本身,然后可以将其分配给变量。