使用列值分组2D数组数据,生成3D数组
P粉022140576
P粉022140576 2023-08-22 18:37:00
0
2
554
<p>我有一个多维数组,想要根据特定列中的值进行分组。</p> <p>我想要根据<code>level</code>进行分组,但我事先不知道level的值。所以,我不能像在<code>for</code>循环中那样说<code>while $i < 7</code>,因为我不知道<code>7</code>是level键的最大值,而且即使我知道也不确定我是否需要这样做。</p> <pre class="brush:php;toolbar:false;">[ ['cust' => 'XT8900', 'type' => 'standard', 'level' => 1], ['cust' => 'XT8944', 'type' => 'standard', 'level' => 1], ['cust' => 'XT8922', 'type' => 'premier', 'level' => 3], ['cust' => 'XT8816', 'type' => 'permier', 'level' => 3], ['cust' => 'XT7434', 'type' => 'standard', 'level' => 7], ]</pre> <p>期望的结果:</p> <pre class="brush:php;toolbar:false;">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 ) ) )</pre> <p><br /></p>
P粉022140576
P粉022140576

全部回复(2)
P粉132730839

最好的方法是,如果您对构建初始数组有控制权,那么在添加条目时,只需一开始就设置好。

如果没有控制权,则构建一个临时数组进行排序:

foreach ($input_arr as $key => &$entry) {
    $level_arr[$entry['level']][$key] = $entry;
}

这样可以得到您想要的形式,并且所有引用都在一起。

如果可能的话,一开始就像这样构建数组。

P粉998100648

首先,你需要按照级别对它们进行分组

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

$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);的输出将以你希望的格式显示

你也可以尝试

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
             )
      )
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!