Объединить два массива в один с тем же ключом - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь объединить два массива с одним и тем же ключом в один.

После того, как я дам эти переменные


var_dump($allArtistsName);
var_dump($allTracksName);

Я получаю этот вывод

Первый массив

array (size=3749)
  0 => string 'Avicii' (length=6)
  1 => string 'Arctic Monkeys' (length=14)
  2 => string 'DJ Antoine' (length=10)

и второй массив

array (size=2135)
  0 => string 'Hey Brother' (length=11)
  1 => string 'Do I Wanna Know?' (length=16)
  2 => string 'House Party - Airplay Edit' (length=26)

В основном ключ 0 из первого массива совпадает с ключом 0 из второго массива.

Так что я пытаюсь объединить их как-нибудь.

Я пробовал array_merge и array_merge_recursive но я не похоже на работу.

Как я могу решить это лучше всего?

РЕДАКТИРОВАТЬ:

Мой ожидаемый результат будет примерно таким:

[ 
  0 =>  [
       'track' => 'Hey Brother',
       'artists' => Avicii 
  1 =>  [
       'track' => 'x',
       'artists' => y
]

Ответы [ 2 ]

3 голосов
/ 22 июня 2019

Несколько вариантов:

$a = ['Avicii',  'Arctic Monkeys',  'DJ Antoine'];
$t = ['Hey Brother', 'Do I Wanna Know?', 'House Party - Airplay Edit'];

// option 1 - artist name as key, track as value
print_r(array_combine($a, $t));
// option 2 - artist name  and track as subarray
print_r(array_map(null, $a, $t));
// option 3 - your expected output
$newArray = [];
foreach ($a as $key => $v) {
    $newArray[] = [
        'artist' => $v,
        'track' => $t[$key],
    ];
}
1 голос
/ 22 июня 2019

Вы можете использовать array_map штуку с обратным вызовом:

<?php
$artists = [
    'Avicii',
    'Arctic Monkeys',
    'DJ Antoine',
];

$tracks = [
    'Hey Brother',
    'Do I Wanna Know?',
    'House Party - Airplay Edit',
];

$merged = array_map(
    function ($artist, $track) {
        return ['artist' => $artist, 'track' => $track];
    },
    $artists,
    $tracks
);

print_r($merged);

Вывод будет:

Array
(
    [0] => Array
        (
            [artist] => Avicii
            [track] => Hey Brother
        )

    [1] => Array
        (
            [artist] => Arctic Monkeys
            [track] => Do I Wanna Know?
        )

    [2] => Array
        (
            [artist] => DJ Antoine
            [track] => House Party - Airplay Edit
        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...