1

例如:

$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方法,但是参考有问题,请参阅php论坛

4

1 回答 1

0

你实际上可以把整个if街区都留在外面。一个比较简单的例子:

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

会转储

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

根据您的 php.ini 设置,您可能会收到有关缺少索引的警告,但您可以在行首使用 an 来抑制警告。@

于 2013-10-24T16:08:48.037 回答