I have one big array structured like this
$array = array(
[0] => array(
'labels' => array('a', 'b', 'c', [...]),
'values' => array('val A', 'val B', 'val C', [...])
),
[1] => array(
'labels' => array('d', 'e', 'f', [...]),
'values' => array('val D', 'val E', 'val F', [...])
),
[2] => array(
'labels' => array([...]),
'values' => array([...])
),
[...],
[n]
)
I want to create a new array for every key, like so:
$labels = array('a', 'b', 'c', 'd', 'e', 'f', [...])
$values = array('val A', 'val B', 'val C', 'val D', 'val E', 'val F', [...])
I would normally use array_merge
, but I don't know how many arrays I will have.
Is there any way of doing it without looping multiple times ?
Thank you
If you want to do some manipulations before building the final array, consider something like this :
$labels = array();
$values = array();
$r = array_map(function($subArray) use(&$labels, &$values) {
// do some stuff here, maybe
$labels = array_merge($labels, $subArray['labels']);
$values = array_merge($values, $subArray['values']);
}, $array);
Something like:
$labels = call_user_func_array('array_merge', array_column($array, 'labels'));
$values = call_user_func_array('array_merge', array_column($array, 'values'));
perhaps?