根据数组键值将数组拆分为子数组

时间:2020-06-26 12:04:36

标签: php arrays

按键值拆分数组时,我遇到一个问题。我的数组如下所示:-

Array
(
[0] => Array
    (
        [product_id] => 6
        [brand_id] => 2
    )

[1] => Array
    (
        [product_id] => 1
        [brand_id] => 1
    )

[2] => Array
    (
        [product_id] => 5
        [brand_id] => 1

    )

)

现在,我想根据brand_id过滤拆分数组。我的预期输出如下:-

Array(
[0] => Array(
    [0] => Array
    (
        [product_id] => 6
        [brand_id] => 2
    )
)
[1] => Array(
    [0] => Array
    (
        [product_id] => 1
        [brand_id] => 1
    )
    [1] => Array
    (
        [product_id] => 5
        [brand_id] => 1
  
    )
)
)

我的输入数组存储在$ proArray变量中

我在下面的尝试:-

$brands = array();
    foreach ($proArr as $key => $pro) {
        $brands[] = $pro['brand_id'];
    }
    $brands = array_unique($brands);
    
    $ckey = 0;
    foreach($brands as $brand){
        
    }

2 个答案:

答案 0 :(得分:1)

一种简单的foreach()循环方法,可根据您的 brand_id 如下所述推送值-

$key = 'brand_id';
$return = array();
foreach($array as $v) {
     $return[$v[$key]][] = $v;
}
print_r($return);

工作演示: https://3v4l.org/bHuWV

答案 1 :(得分:0)

代码:

$arr = array(
    array(
        'product_id' => 6,
        'brand_id' => 2
    ),
    array(
        'product_id' => 1,
        'brand_id' => 1
    ),
    array(
        'product_id' => 5,
        'brand_id' => 1

    )
);
$res = [];
foreach ($arr as $key => $value)
    $res[$value['brand_id']][] = $value;
$res = [...$res];
print_r($res);

输出:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [product_id] => 6
                    [brand_id] => 2
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [product_id] => 1
                    [brand_id] => 1
                )

            [1] => Array
                (
                    [product_id] => 5
                    [brand_id] => 1
                )

        )

)
相关问题