@alex5792
front man

Объединить динамическое кол-во массивов в один массив PHP?

Добрый день, есть функция array_merge которая объединяет несколько массивов в один, но как сделать чтобы внутри цикла если массив проходит проверку "if" то он добавляется к массиву который был присоединен в прошлой итерации, то есть массив перезаписывается с каждой итерацией если проверка была пройдена. Буду благодарен за любую помощь.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 3
@sl0
А что мешает сначала отобрать нужные массивы по какому-нибудь критерию, а уже потом их объединить?
Ответ написан
hrabry
@hrabry
МБ так?
$arrays = [
    ['hello' => 'world 0', 1, 2, 3, 4],
    ['hello' => 'world 1'],
    ['hello' => 'world 2', 5, 6, 7],
    ['hello' => 'world 3', 5, 6, 7, 8, 9]
];

$newArray = array_reduce($arrays, function ($carry, $item) {
    if (isset($item['hello']) && $item['hello'] === 'world 2' || $item['hello'] === 'world 0') {
        $carry = array_merge($carry, $item);
    }
    return $carry;
}, []);


Получим такое
array(8) {
  ["hello"]=>
  string(7) "world 2"
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
  [6]=>
  int(7)
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы