@TechnicalMan94

Как объединить (скрестить) массивы в PHP?

Суть вопроса в заголовке, возможно, отражена не верно, просто не знаю как назвать такую операцию.
Представим, есть три (а иногда два) массива php
Массив 1
array(
   0 => 'значение 1',
   1 => 'значение 2',
   2 => 'значение 3',
)

Массив 2
array(
   0 => 'значение 4',
   1 => 'значение 5',
   2 => 'значение 6',
   3 => 'значение 7',
   4 => 'значение 8',
   5 => 'значение 9',
   6 => 'значение 10',
)

Массив 3
array(
   0 => 'значение 11',
   1 => 'значение 12',
   2 => 'значение 13',
   3 => 'значение 14',
   4 => 'значение 15',
)

У меня задача состоит в том, чтобы из таких массиво получить один результирующий такой, в котором содержится 3 * 7 * 5 значений-массивов (по кол-ву значений в массивах), в которых по 3 значения (по кол-ву вводных массиво), такое как-бы скрещивание всех значений со всеми. Каждое значение получается уникальное. Копал всю ночь, рекурсивно циклами гонял, но не догонял. То овермного значений получается, то не все.
На выходе, например:
array(
   0 => array('значение 1','значение 4','значение из третьего массива'),
   1 => array('значение 1','значение 5','значение из третьего массива'),
   2 => array('значение 1','значение 6','значение из третьего массива'),
   3 => array('значение 1','значение 7','значение из третьего массива'),
   4 => array('значение 1','значение 8','значение из третьего массива'),
   5 => array('значение 1','значение 10','значение из третьего массива'), 
   ....
   104 => array('значение 3','значение 10','значение 15')
)

Код писать не прошу, натолкните на мысль :)
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
use foreach @TechnicalMan94
$a1 = array(
    0 => 'значение 1',
    1 => 'значение 2',
    2 => 'значение 3',
);
$a2 = array(
    0 => 'значение 4',
    1 => 'значение 5',
    2 => 'значение 6',
    3 => 'значение 7',
    4 => 'значение 8',
    5 => 'значение 9',
    6 => 'значение 10',
);
 
$a3 =  array(
    0 => 'значение 11',
    1 => 'значение 12',
    2 => 'значение 13',
    3 => 'значение 14',
    4 => 'значение 15',
);

$a = [];
foreach ($a1 as $i1=>$v1) {
    foreach ($a2 as $i2=>$v2) {
        foreach ($a3 as $i3=>$v3) {
            $a[] = [$v1,$v2,$v3];
        }
    }
}

var_dump($a);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
toxa82
@toxa82
Только перебор всех трех массивов и создание нового.
Ответ написан
Комментировать
mbezvodinskikh
@mbezvodinskikh
Все намного проще
$a1 = array(
    0 => 'значение 1',
    1 => 'значение 2',
    2 => 'значение 3',
);
$a2 = array(
    0 => 'значение 4',
    1 => 'значение 5',
    2 => 'значение 6',
    3 => 'значение 7',
    4 => 'значение 8',
    5 => 'значение 9',
    6 => 'значение 10',
);
 
$a3 =  array(
    0 => 'значение 11',
    1 => 'значение 12',
    2 => 'значение 13',
    3 => 'значение 14',
    4 => 'значение 15',
);
$a = [];
array_push($a, ...$a1, ...$a2, ...$a3);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы