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 の設定によっては、インデックスが見つからないという警告が表示される場合がありますが、行頭に を付けることで警告を抑制することができます。@

于 2013-10-24T16:08:48.037 に答える