Многомерный массив групп PHP

php arrays multidimensional-array

106 просмотра

1 ответ

Мне нужна помощь с группировкой многомерного массива PHP. Массив у меня есть:

    Array
(
    [1385] => Array
        (
            [product_id] => 1385
            [product] => Tossed salad
            [category_ids] => Array
                (
                    [0] => 489
                )
        )
    [1386] => Array
        (
            [product_id] => 1386
            [product] => Green salad
            [category_ids] => Array
                (
                    [0] => 489
                )
        )
    [1387] => Array
        (
            [product_id] => 1387
            [product] => Milk Shake
            [category_ids] => Array
                (
                    [0] => 440
                )
        )
    [1388] => Array
        (
            [product_id] => 1388
            [product] => Mango Juice
            [category_ids] => Array
                (
                    [0] => 440
                )
        )
    [1389] => Array
        (
            [product_id] => 1389
            [product] => Orange Juice
            [category_ids] => Array
                (
                    [0] => 440
                )
        )
)

Я хочу сгруппировать массив по-другому, чтобы я мог перечислить их категории. Что-то вроде этого :

Array
    (
        [category_ids] => 489,
        [products] => 
          [0] => Array
            (
                [product_id] => 1385
                [product] => Tossed salad
            )
          [1] => Array
            (
                [product_id] => 1386
                [product] => Green salad
            )

        [category_ids] => 440,
        [products] => 
          [0] => Array
            (
                [product_id] => 1387
                [product] => Milk Shake
            )
          [1] => Array
            (
                [product_id] => 1388
                [product] => Mango Juice
            )
          [2] => Array
            (
                [product_id] => 1389
                [product] => Orange Juice
            )
    )

Структура может быть неправильной, потому что я только что сделал это с помощью своего текстового редактора. Но да, я хочу что-то подобное. Перечислите эти продукты под category_ids, иногда их может быть больше одного category_ids. Есть также много других областей продуктов, я сокращаю, чтобы это выглядело менее сложным. Есть product_price, company_idа у некоторых есть многомерный массив вроде product_options.

Автор: Akam Hasan Sharkar Источник Размещён: 08.11.2019 11:06

Ответы (1)


0 плюса

Решение

Привет, используйте этот код, чтобы получить свой результат

$array =  array(
    1385 => array(
            'product_id' => 1385,
            'product' => 'Tossed salad',
            'category_ids' => array(
                    0 => 489
                )
        ),
    1386 => array(
            'product_id' => 1386,
            'product' => 'Green salad',
            'category_ids' => array(
                    0 => 489
                )
        ),
    1387 => array(
            'product_id' => 1387,
            'product' => 'Milk Shake',
            'category_ids' => array(
                    0 => 440
                )
        ),
    1388 => array(
            'product_id' => 1388,
            'product' =>' Mango Juice',
            'category_ids' => array(
                    0 => 440
                )
        ),
    1389 => array(
            'product_id' => 1389,
            'product' => 'Orange Juice',
            'category_ids' => array(
                    0 => 440
                )
        )
);

$catArray = array();

foreach ($array as $key => $value) {
    foreach ($value['category_ids'] as $key2 => $value2) {
        if(isset($catArray[$value2])) {
            array_push($catArray[$value2]['products'], array('product_id' => $key,
                    'product_name' => $value['product']));
        }
        else {
            $catArray[$value2] = array(
                 'cat_id' => $value2
                );
            $catArray[$value2]['products'] =  array( 0 => 
               array(
                    'product_id' => $key,
                    'product_name' => $value['product']
                )
             );
        }
    }
}

echo '<pre/>';
print_r($catArray);
Автор: Ashish Chauhan Размещён: 20.08.2016 09:58
Вопросы из категории :
32x32