E_NOTICE и неопределенная ошибка индекса с многомерными массивами

Я просто хочу избежать отключения E_NOTICE из php.ini, чтобы обрабатывать большие массивы, когда они не установлены.

    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.

1 ответ

Нет, ты действительно не хочешь отключать это уведомление. Это не единственное, на что вы будете получать уведомления. Просто добавьте простую дополнительную строку, чтобы разобраться с этим, или, если вы обнаружите, что это обычный набор кода, который вы пишете снова и снова и снова, закодируйте его в функцию. В уведомлении говорится, что с вашим кодом происходит что-то подозрительное. Не позволяйте своему коду пахнуть... вы пожалеете об этом позже.

Пример: передайте массив по ссылке, у вас будет разница только между двумя циклами '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');
}
Другие вопросы по тегам