如何按特定子数组值对多维数组进行分组? [英] How to group a multidimensional array by a particular subarray value?

查看:51
本文介绍了如何按特定子数组值对多维数组进行分组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个多维数组,正在尝试根据特定列中的值对它们进行分组.

I have a multidimensional array and am trying to group them according to the value in a specific column.

我正在尝试按 level 对它们进行分组,但实际上我事先并不知道级别.所以,我不能把它放在 for 循环中并说 while $i <7,因为我不知道 7 是 level 键的最大值,坦率地说,即使我知道,我也不确定我是否需要这样做...

I'm trying to group them by level, but I won't actually know the level beforehand. So, it's not like I can put it in a for loop and say while $i < 7, because I won't know that 7 is the maximum value for the level key, and frankly, I'm not sure that's how I would need to do it even if I did...

Array (
   [0] => Array (
          [cust] => XT8900
          [type] => standard
          [level] => 1
          )
   [1] => Array (
          [cust] => XT8944
          [type] => standard
          [level] => 1
          )
   [2] => Array (
          [cust] => XT8922
          [type] => premier
          [level] => 3
          )
   [3] => Array (
          [cust] => XT8816
          [type] => permier
          [level] => 3
          )
   [4] => Array (
          [cust] => XT7434
          [type] => standard
          [level] => 7
          )
)

我希望产生什么:

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)

推荐答案

你需要先按级别分组

使用 foreach 循环到数组中检查级别是否与前一项相同,然后将其与该数组分组

Use foreach to loop into array check if the level is the same with the previous item then group it with that array

  $templevel=0;   

  $newkey=0;

  $grouparr[$templevel]="";

  foreach ($items as $key => $val) {
   if ($templevel==$val['level']){
     $grouparr[$templevel][$newkey]=$val;
   } else {
     $grouparr[$val['level']][$newkey]=$val;
   }
     $newkey++;       
  }
print($grouparr);

<小时>

print($grouparr); 的输出将按照您希望的格式显示


The output of print($grouparr); will display like the format you hoped for

你也可以试试

print($grouparr[7]);

会显示

 [7] => Array (
      [4] => Array (
             [cust] => XT7434
             [type] => standard
             )
      )

或者

print($grouparr[3]);

会显示

[3] => Array (
      [2] => Array (
             [cust] => XT8922
             [type] => premier
             )

      [3] => Array (
             [cust] => XT8816
             [type] => permier
             )
      )

这篇关于如何按特定子数组值对多维数组进行分组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆