Пример массива (может отличаться по количеству уровней или членов.
$dataset_groups = array(
'first_level1_group' => array(
array(
'fname' => 'John',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pear'),
),
),
'second_level1_group' => array(
array(
'fname' => 'Adam',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pear'),
),
array(
'fname' => 'Jane',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pineapple'),
),
),
'third_level1_group' => array(
array(
'fname' => 'Andrew',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pear'),
),
array(
'fname' => 'Ross',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pineapple'),
),
),
);
Я хочу сделать что-то похожее на (избавиться от first_level1
, et c)
$dataset_groups = array(
array(
'fname' => 'John',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pear'),
),
array(
'fname' => 'Adam',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pear'),
),
array(
'fname' => 'Jane',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pineapple'),
),
array(
'fname' => 'Andrew',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pear'),
),
array(
'fname' => 'Ross',
'lname' => 'Smith',
'favourite_fruit' => array('apple', 'pineapple'),
),
);
Вопрос в том, будет ли что-то подобное
foreach ($dataset_groups as $group_key => $group) {
if (empty($dataset)) {
$dataset = $group;
} else {
$dataset = array_merge($dataset, $group);
}
}
более эффективным (я думаю, что это должно быть О (n) сложностью) или этим (как я обнаружил в одном из предложения)? $dataset = call_user_func_array('array_merge', $dataset_groups);
Так как я не знаю внутреннюю работу call_user_func_array()
, мне трудно определить (хотя у меня есть ощущение, что это будет почти то же самое).
РЕДАКТИРОВАТЬ1: в основном мне интересно, есть ли причина для перехода на call_user_func_array()
помимо читабельности.