Several times a day I run into a problem where I need to dynamically initialize variables in a multidimensional array to prevent PHP throwing a notice because of an uninitialized variable.
Code fragments like this are very common:
if(!isset($profile[$year][$month][$weekday][$hour])) {
$profile[$year][$month][$weekday][$hour] = 0;
}
$profile[$year][$month][$weekday][$hour] += $load;
Or:
$profile[$year][$month][$weekday][$hour]
= isset($profile[$year][$month][$weekday][$hour])
? $profile[$year][$month][$weekday][$hour] + $load
: $load;
That looks awful and is a pain to write, also makes maintaining quite hard as these fragments are abundant. Does anyone have any ideas how I could simplify such a task? I thought of creating a reference $r to $profile[$year][$month][$weekday][$hour] to reduce redundancy, but it will also throw a notice if not initialized properly.
Initializing the array beforehand isn’t feasible as not all keys will be used and I’d like to avoid unnecessary keys.
Any tips?
I asked the same question a few months back and got a number of good answers.
In your case, maybe set up a generic function?
Something like:
the parameter before last being the member to be set, and the last the value (or something like that, you get my drift.) You could use
func_get_args()to keep the parameter count flexible.