具有相同键的sum数组的最佳实践是什么

时间:2013-10-24 16:03:31

标签: php arrays isset arrayobject

例如:

$output = array();
foreach($data as $row) {
    if(!isset($output[$row->foo][$row->bar])) {
        $output[$row->foo][$row->bar] = 0;
    }        
    $output[$row->foo][$row->bar] += $row->value;
}

可以使用某个对象跳过if(!isset(...))的部分?

我尝试了重载ArrayObjectoffsetGet方法,但引用存在问题see the php forum

1 个答案:

答案 0 :(得分:0)

您实际上可以将整个if块移出。一个相对简单的例子:

<?
$x[15][12] += 5;
var_dump($x);
?>

将转储

array(1) {
  [15]=>
  array(1) {
    [12]=>
    int(5)
  }
}

根据您的php.ini设置,您可能会收到有关缺少索引的警告,但您可以在该行的开头suppress the warning with an @