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