例如:
$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(...))
的部分?
我尝试了重载ArrayObject
和offsetGet
方法,但引用存在问题see the php forum。
答案 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 @
。