0

我只是想避免关闭 php.ini 中的 E_NOTICE 以便在未设置大型数组时处理它们。

    foreach ($rowset1 as $row) {
        if ( ! isset($stats['user'][$row['insertedBy']]['a']['xxx'])) {
            $stats['user'][$row['insertedBy']]
                ['a']['xxx'] = $row['xxx'];
        }else{
            $stats['user'][$row['insertedBy']]
                ['a']['xxx'] += $row['xxx'];
        }            
    }  
    foreach ($rowset2 as $row) {
        if ( ! isset($stats['user'][$row['insertedBy']]['b']['xxx'])) {
            $stats['user'][$row['insertedBy']]
                ['b']['yyy'] = $row['xxx'];
        }else{
            $stats['user'][$row['insertedBy']]
                ['b']['yyy'] += $row['xxx'];
        }            
    }  

我只想在循环中编写数组键,一次,就像我不打开 E_NOTICE 时那样。

4

1 回答 1

0

不,您真的不想关闭该通知。这不是您会收到通知的唯一内容。只需添加简单的额外行来处理它,或者如果您发现它是您一遍又一遍地编写的一组常见代码,请将其编码为一个函数。该通知告诉您,您的代码发生了一些可疑的事情。不要让你的代码闻起来……你以后会后悔的。

示例:通过引用传入数组,两个循环之间只有 'a' 和 'b' 的区别

function blah($row, &$stats, $altVariable, $threeLetterVar) {

 if ( ! isset($stats['user'][$row['insertedBy']][$altVariable]['xxx'])) {
            $stats['user'][$row['insertedBy']]
                [$altVariable][$threeLetterVar] = $row['xxx'];
        }else{
            $stats['user'][$row['insertedBy']]
                [$altVariable][$threeLetterVar] += $row['xxx'];
        } 
}


foreach ($rowset1 as $row) {
    blah($row, $stats, 'a', 'xxx');
}

foreach ($rowset2 as $row) {
    blah( $row, $stats, 'b', 'yyy');
}
于 2014-01-24T19:54:33.160 回答