这是一个数组,
$array = array(
'one' => 1,
'two' => 2,
'three' $array['one'] + $array['two']
);
发生错误, 为什么呢?
答案 0 :(得分:1)
因为在声明结束之前$array
不存在。由于您引用了不存在的资源,因此无法以这种递归方式定义数组。
这是一个有效的变体。确实,不是很方便,但工作:
<?php
$array = [
'one' => 1,
'two' => 2
];
$array['three'] = $array['one'] + $array['two'];
var_dump($array);
输出显然是:
array(3) {
'one' =>
int(1)
'two' =>
int(2)
'three' =>
int(3)
}
唯一非常优雅的方法需要付出相当大的努力:
您可以实现实现ArrayAccess
接口的类。这允许您实现如何在内部定义属性(例如,总和),同时仍允许通过数组表示法访问这些属性。因此,仅在设置对象时,在运行时与数组没有区别。然而,这是一项巨大的努力,我怀疑在> 99%的情况下它是值得的。
答案 1 :(得分:0)
您正在使用正在声明的变量,其值值尚不清楚。这是你应该怎么写的:
$array = array(
'one' => 1,
'two' => 2,
);
$array['tree'] = $array['one'] + $array['two'];