【问题标题】:Split the array in to sub arrays based on array key value [duplicate]根据数组键值将数组拆分为子数组[重复]
【发布时间】:2020-06-27 15:50:25
【问题描述】:

我在按键值拆分数组时面临一个问题。我的数组如下所示:-

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){
        
    }

【问题讨论】:

  • 尝试过什么吗?
  • 是但不工作
  • 我首先使用循环来获取所有品牌并使用 array_unique 并保存在一个数组中,然后在品牌上使用循环并再次在 Proarray 上循环
  • 请展示你的尝试。
  • 这能回答你的问题吗? How to group subarrays by a column value?

标签: php arrays


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    代码:

    $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
                    )
    
            )
    
    )
    

    【讨论】:

    • if 没有理由。您所做的一切与下一行所做的相同。创建一个新数组并添加值
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多