Несколько раз в день я сталкиваюсь с проблемой, когда мне нужно динамически инициализировать переменные в многомерном массиве, чтобы PHP не выдавал уведомление из-за неинициализированной переменной.
Подобные фрагменты кода очень распространены:
if(!isset($profile[$year][$month][$weekday][$hour])) {
$profile[$year][$month][$weekday][$hour] = 0;
}
$profile[$year][$month][$weekday][$hour] += $load;
Или:
$profile[$year][$month][$weekday][$hour]
= isset($profile[$year][$month][$weekday][$hour])
? $profile[$year][$month][$weekday][$hour] + $load
: $load;
Это выглядит ужасно и неудобно для написания, а также усложняет поддержание, так как этих фрагментов много. У кого-нибудь есть идеи, как можно упростить такую задачу? Я думал о создании ссылки от $r
до $profile[$year][$month][$weekday][$hour]
, чтобы уменьшить избыточность, но он также выдаст уведомление, если не будет правильно инициализирован.
Предварительная инициализация массива невозможна, так как не все ключи будут использоваться, и я хотел бы избежать ненужных ключей.
Какие-нибудь советы?