是否可以组合数组键以使用组合键值创建新键?
我不是要求创建一个函数来组合它们,只是想知道是否可以做这样的事情(显然这段代码不起作用,只是显示我在代码中的含义):
<?php
$box = array(
"Width" => 10,
"Height" => 20,
"Total" => ($box["Width"] + $box["Height"]),
);
echo $box["Total"]; // would show up as 30
?>
答案 0 :(得分:3)
不,不是在定义数组时。首先评估array(...)
,其结果已分配=
到$box
。在评估完成之前,您无法引用$box
。
你必须分两步完成,或者创建一个可以使用方法和/或(自动)getter来做这种魔术的自定义类。
答案 1 :(得分:2)
您需要两个步骤:
$box = array(
"Width" => 10,
"Height" => 20,
);
$box["Total"] = $box["Width"] + $box["Height"];
echo $box["Total"];
答案 2 :(得分:1)
简单的答案是否定的。
详细说明:这正是课程的目的。请注意,您可以非常简单地执行您要执行的操作:
<?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
的文档。
答案 3 :(得分:-1)
由于你已经有10和20,你可以写
<?php
$box = array(
"Width" => 10,
"Height" => 20,
"Total" => 10 + 30,
);
echo $box["Total"]; // would show up as 30