PHP组合数组键值(在相同的数组中)以创建新的键值

时间:2011-11-10 03:14:09

标签: php arrays

是否可以组合数组键以使用组合键值创建新键?

我不是要求创建一个函数来组合它们,只是想知道是否可以做这样的事情(显然这段代码不起作用,只是显示我在代码中的含义):

<?php
$box = array(
    "Width" => 10,
    "Height" => 20,
    "Total" => ($box["Width"] + $box["Height"]),
);
echo $box["Total"]; // would show up as 30
?>

4 个答案:

答案 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