我只是想避免从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一样。
答案 0 :(得分: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');
}