使用数组值本身填充数组

时间:2015-12-12 16:42:18

标签: php

这是一个数组,

$array = array(
'one' => 1,
'two' => 2,
'three' $array['one'] + $array['two']
);

发生错误, 为什么呢?

2 个答案:

答案 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'];