@prostovlad

Как преобразовать одномерный массива в многомерный?

Добрый день, есть массив
spoiler
array (
  0 => 
  array (
    'key' => '36',
    'api_id' => '3',
    'name' => 'Акриловая ванна ABBER AB9201-1.6',
    'model' => '',
    'quantity' => '2',
    'stock' => true,
    'price' => '82950.00р.',
  ),
  1 => 
  array (
    'key' => '37',
    'api_id' => '4',
    'name' => 'Акриловая ванна ABBER AB9203-1.4',
    'model' => '',
    'quantity' => '2',
    'stock' => true,
    'price' => '78750.00р.',
  ),
  2 => 
  array (
    'key' => '39',
    'api_id' => '1',
    'name' => 'Акриловая ванна ABBER AB9203-1.5',
    'model' => '',
    'quantity' => '1',
    'stock' => true,
    'price' => '80850.00р.',
  ),
  3 => 
  array (
    'key' => '40',
    'api_id' => '1',
    'name' => 'Акриловая ванна ABBER AB9207MB',
    'model' => '',
    'quantity' => '1',
    'stock' => true,
    'price' => '109200.00р.',
  ),
  4 => 
  array (
    'key' => '38',
    'api_id' => '2',
    'name' => 'Акриловая ванна ABBER AB9203-1.6',
    'model' => '',
    'quantity' => '1',
    'stock' => true,
    'price' => '84000.00р.',
  ),
  5 => 
  array (
    'key' => '41',
    'api_id' => '2',
    'name' => 'Душевая кабина Niagara Lux 7710G',
    'model' => 'NGL-7710G',
    'quantity' => '1',
    'stock' => true,
    'price' => '59900.00р.',
  ),
)

нужно преобразовать в двухмерный по api_id
spoiler
array (
    1 =>
    array (
    0 =>
    array (
        'key' => '39',
        'api_id' => '1',
        'name' => 'Акриловая ванна ABBER AB9203-1.5',
        'model' => '',
        'quantity' => '1',
        'stock' => true,
        'price' => '80850.00р.',
    ),
    1 =>
    array (
        'key' => '40',
        'api_id' => '1',
        'name' => 'Акриловая ванна ABBER AB9207MB',
        'model' => '',
        'quantity' => '1',
        'stock' => true,
        'price' => '109200.00р.',
    ),
),
   2 =>
    array (
    0 =>
    array (
        'key' => '38',
        'api_id' => '2',
        'name' => 'Акриловая ванна ABBER AB9203-1.6',
        'model' => '',
        'quantity' => '1',
        'stock' => true,
        'price' => '84000.00р.',
    ),
    1 =>
    array (
        'key' => '41',
        'api_id' => '2',
        'name' => 'Душевая кабина Niagara Lux 7710G',
        'model' => 'NGL-7710G',
        'quantity' => '1',
        'stock' => true,
        'price' => '59900.00р.',
    ),
   ),
 3 =>
    array (
    0 =>
    array (
        'key' => '36',
        'api_id' => '3',
        'name' => 'Акриловая ванна ABBER AB9201-1.6',
        'model' => '',
        'quantity' => '2',
        'stock' => true,
        'price' => '82950.00р.',
    ),
  ),
    4 =>
    array (
    0 =>
    array (
        'key' => '37',
        'api_id' => '4',
        'name' => 'Акриловая ванна ABBER AB9203-1.4',
        'model' => '',
        'quantity' => '2',
        'stock' => true,
        'price' => '78750.00р.',
    ),
),
)

все варианты что нашел тут и в сети почему то не срабатывают. (
  • Вопрос задан
  • 78 просмотров
Решения вопроса 2
0xD34F
@0xD34F
$grouped = array_values(array_reduce($arr, function($acc, $n) {
  $acc[$n['api_id']][] = $n;
  return $acc;
}, []));
Ответ написан
Комментировать
@alexalexes
Вам нужен определенный навык работы с наполнением ассоциативных массивов. С помощью него можно делать такие трюки.
// $in_arr - вход
// $out_arr - выход
$out_arr = [];
foreach($in_arr as $in_item)
  $out_arr[$in_item['api_id']][] = $in_item;
$out_arr = array_values($out_arr);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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