是否可以组合数组键以使用组合的键值创建新键?
我并不是要求创建一个函数来组合它们,只是想知道是否有可能这样做(显然这段代码不起作用,只是显示了我在代码中的意思(:
<?php
$box = array(
"Width" => 10,
"Height" => 20,
"Total" => ($box["Width"] + $box["Height"]),
);
echo $box["Total"]; // would show up as 30
?>
没有,在定义数组时没有。首先对array(...)
进行评估,其结果被分配给=
到$box
。在评估完成之前,您不能参考$box
。
您必须分两步来完成,或者创建一个自定义类,该类可以使用方法和/或(automagic(getter来实现这种魔术。
您需要两个步骤:
$box = array(
"Width" => 10,
"Height" => 20,
);
$box["Total"] = $box["Width"] + $box["Height"];
echo $box["Total"];
简单的答案是否定的。
详细说明:这正是类应该做的。注意,你可以非常简单地做你想做的事情:
<?php
class Box extends ArrayObject
{
public function offsetGet($key)
{
return $key == 'Total' ? $this['Width'] + $this['Height'] : parent::offsetGet($key);
}
}
$box = new Box(array(
'Width' => 10,
'Height' => 20
));
echo $box['Total'],"'n";
当然,在本例中,$box
不是真正的数组,因此不能直接与数组函数一起使用。参见ArrayObject
的文档。
由于您已经有了10和20,因此可以编写
<?php
$box = array(
"Width" => 10,
"Height" => 20,
"Total" => 10 + 30,
);
echo $box["Total"]; // would show up as 30