Объединить значения из разных массивов в один с одним и тем же ключом

У меня есть два массива:

Array
(
[0] => 5
[1] => 4
)
Array
(
[0] => BMW
[1] => Ferrari
)

И я хотел бы получить такой результат. Объединить значения одним и тем же ключом

Array
(
[0] => Array
(
[0] => 5
[1] => BMW
)
[1] => Array
(
[0] => 4
[1] => Ferrari
)
)

Как я мог это сделать? Есть ли родной PHP функция, которая делает это? Я старался array_merge_recursive а также array_merge но не получил ожидаемый результат

0

Решение

Что касается комментария @ splash58:

Ты можешь использовать массив-карта. Вот пример:

$array = [["5", "4"], ["BMW", "Ferrari"]];
$res = array_map(null, ...$array);

Сейчас res будет содержать:

Array
(
[0] => Array
(
[0] => 5
[1] => BMW
)
[1] => Array
(
[0] => 4
[1] => Ferrari
)
)

Если массив в 2 разных var вы можете использовать:

$res= array_map(null, ["5", "4"], ["BMW", "Ferrari"]);
3

Другие решения

<?php
$a = array();
$a[0] = '5';
$a[1] = '4';

$b = array();
$b[0] = 'BMW';
$b[1] = 'Ferrari';

merge_by_key($a, $b);

function merge_by_key($a, $b){
$c = array();
fill_array($c,$a);
fill_array($c,$b);
print_r($c);
}

function fill_array(&$c, $a) {
foreach ($a as $key => $value){
if(isset($c[$key])) {
array_push($c[$key], $value);
} else {
$c[$key] = array($value);
}
}
}

Выход:

Array
(
[0] => Array
(
[0] => 5
[1] => BMW
)

[1] => Array
(
[0] => 4
[1] => Ferrari
)

)
0

Вы можете использовать array_map с нулем в качестве первого аргумента (в руководстве есть пример), чтобы получить желаемый результат:

<?php

$nums = [0 => 5, 1 => 4];
$cars = [0 => 'BMW', 1 => 'Ferrari'];

var_export(array_map(null, $nums, $cars));

Выход:

array (
0 =>
array (
0 => 5,
1 => 'BMW',
),
1 =>
array (
0 => 4,
1 => 'Ferrari',
),
)

Обратите внимание, что следующий ввод даст тот же результат:

$nums = ['puff' => 5, 'powder' => 4];
$cars = ['powder' => 'BMW', 'puff' => 'Ferrari'];

Порядок, а не ключи, определяют пары в результате при использовании array_map, как указано выше.

Чтобы связать по ключу с помощью foreach (запишите порядка $ cars):

<?php
$nums = [0 => 5, 1 => 4];
$cars = [1 => 'Ferrari', 0 => 'BMW'];
foreach($nums as $k => $num)
$result[] = [$num, $cars[$k]];

var_export($result);

Результаты также в желаемом результате.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector