I need to merge a three-dimensional array with a two-dimensional array based on a shared value for ‘id.’
In the example below, “George Washington” has an ‘id’ of 1. I need to append his ‘value’, which is found in the second array where ‘id’ is also 1.
The ‘id’ of “John Adams” is 2, which is not found in the second array. As a result, his ‘value’ needs to be set to 0 (or NULL).
The final result is a three-dimension array where ‘value’ has been added to each item in the original array.
Array #1
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[name] => "George Washington"
)
[total] => 8
[average] => 2.5
)
[1] => Array
(
[0] => Array
(
[id] => 2
[name] => "John Adams"
)
[total] => 6
[average] => 3.0
)
[2] => Array
(
[0] => Array
(
[id] => 5
[name] => "James Monroe"
)
[total] => 9
[average] => 2.0
)
)
Array #2
Array
(
[0] => Array
(
[id] => 1
[value] => 12
)
[1] => Array
(
[id] => 5
[value] => 18
)
)
Desired Result:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[name] => "George Washington"
)
[total] => 8
[average] => 2.5
[value] => 12
)
[1] => Array
(
[0] => Array
(
[id] => 2
[name] => "John Adams"
)
[total] => 6
[average] => 3.0
[value] => 0
)
[2] => Array
(
[0] => Array
(
[id] => 5
[name] => "James Monroe"
)
[total] => 9
[average] => 2.0
[value] => 18
)
)
What I’ve tried so far:
I separated all of the ‘id’ values from the first array into a new array named $ids. Then while looping through the items in the second array, I check to see whether the ‘id’ from the second array is found in the $ids array.
But then I’m stuck because I don’t know how to specify which item in the first array needs to receive the new ‘value’. Also, this seems like a messy solution because of the overhead involved in creating the $ids array.
Didn’t even realize you had tried to list the IDs and such before I was done writing this, but here you go anyway. Good luck!
Edit: Values are now set to NULL by default and thus only gets changed later on if needed.