[英]PHP Combining array key values (in same array) to create a new key value
是否可以使用组合键值来组合数组键以创建新键?
我不是要创建一个将它们组合在一起的函数,只是想知道是否有可能做这样的事情(显然,此代码不起作用,只是显示了我在代码中的含义):
<?php
$box = array(
"Width" => 10,
"Height" => 20,
"Total" => ($box["Width"] + $box["Height"]),
);
echo $box["Total"]; // would show up as 30
?>
不,不是在定义数组时。 array(...)
被首先计算,其结果被指定=
到$box
。 评估完成之前,您不能引用$box
。
您必须分两步来完成它,或者创建一个可以使用方法和/或(自动)getter进行此类魔术的自定义类。
您需要2个步骤:
$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
在此示例$box
不是真正的数组,因此不能直接与数组函数一起使用。 请参阅ArrayObject
的文档。
由于您已经有10和20,所以可以写
<?php
$box = array(
"Width" => 10,
"Height" => 20,
"Total" => 10 + 30,
);
echo $box["Total"]; // would show up as 30
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.