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


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

您必须分两步来完成,或者创建一个自定义类,该类可以使用方法和/或(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