集团由一个特定的值多维数组? [英] Group a multidimensional array by a particular value?

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

问题描述

希望我能正确解释这个...

我有一个多维数组,我试图根据集团的一个键的值它们。

所以,我想给他们组由水平,但我不会真正知道事先的水平。因此,它不喜欢我可以把它放在一个for循环,并说虽然$ I< 7,因为我不知道7是针对一级重点最大值,并坦率地说,我不知道这就是我需要做它,即使我没有...

 阵列(
   [0] =>阵列(
          [自定义] => XT8900
          [类型] = GT;标准
          [等级] => 1
          )
   [1] =>阵列(
          [自定义] => XT8944
          [类型] = GT;标准
          [等级] => 1
          )
   [2] =>阵列(
          [自定义] => XT8922
          [类型] = GT; premier
          [等级] => 3
          )
   [3] =>阵列(
          [自定义] => XT8816
          [类型] = GT; permier
          [等级] => 3
          )
   [4] =>阵列(
          [自定义] => XT7434
          [类型] = GT;标准
          [等级] => 7
          )

什么我希望制作:

 阵列(   [1] =>阵列(
          [0] =>阵列(
                    [自定义] => XT8900
                    [类型] = GT;标准
                    )
          [1] =>阵列(
                    [自定义] => XT8944
                    [类型] = GT;标准
                    )
          )   [3] =>阵列(
          [2] =>阵列(
                 [自定义] => XT8922
                 [类型] = GT; premier
                 )          [3] =>阵列(
                 [自定义] => XT8816
                 [类型] = GT; permier
                 )
          )   [7] =>阵列(
          [4] =>阵列(
                 [自定义] => XT7434
                 [类型] = GT;标准
                 )
          )


解决方案

您需要由它们组合的级别第一个

使用的foreach 以循环到数组检查,如果水平与previous项目一样,那么这组与阵列

  $ templevel = 0;  $则newkey = 0;  $ grouparr [$ templevel] =;  的foreach($项目,如$关键=> $ VAL){
   如果($ templevel == $ VAL ['级别']){
     $ grouparr [$ templevel] [$则newkey] = $ VAL;
   }其他{
     $ grouparr [$ VAL ['级别'] [$则newkey] = $ VAL;
   }
     $则newkey ++;
  }
打印($ grouparr);


打印($ grouparr)的输出; 会像你希望的格式

您也可以尝试

 打印($ grouparr [7]);

将显示

  [7] =>阵列(
      [4] =>阵列(
             [自定义] => XT7434
             [类型] = GT;标准
             )
      )

或者

 打印($ grouparr [3]);

将显示

  [3] =>阵列(
      [2] =>阵列(
             [自定义] => XT8922
             [类型] = GT; premier
             )      [3] =>阵列(
             [自定义] => XT8816
             [类型] = GT; permier
             )
      )

Hopefully, I can explain this correctly...

I have a multidimensional array and am trying to group them according to the value of one the keys.

So, 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
          )
)

What I'm hoping to produce:

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

解决方案

You need to group them by level first

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


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

You can also try to

print($grouparr[7]);

Will display

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

Or

print($grouparr[3]);

Will display

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

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

这篇关于集团由一个特定的值多维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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