suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Gruppieren Sie 2D-Array-Daten mithilfe von Spaltenwerten, um ein 3D-Array zu generieren

<p>Ich habe ein mehrdimensionales Array, das ich basierend auf den Werten in einer bestimmten Spalte gruppieren möchte. </p> <p>Ich möchte basierend auf <code>level</code> gruppieren, kenne aber den Wert von level nicht im Voraus. Daher kann ich <code>while $i </code> nicht wie in der <code>for</code>-Schleife sagen ; ist der Ebenenschlüssel des Maximalwerts, und selbst wenn ich es wüsste, wäre ich mir nicht sicher, ob ich das tun müsste. </p> <pre class="brush:php;toolbar:false;">[ ['cust' => 'XT8900', 'type' => ['cust' => 'XT8944', 'type' => ['cust' => 'XT8922', 'type' => ['cust' => 'XT8816', 'type' => ['cust' => 'XT7434', 'type' => ]</pre> <p>Gewünschtes Ergebnis: </p> <pre class="brush:php;toolbar:false;">Array ( [1] => Array ( [0] => Array ( [cust] => [Typ] => Standard ) [1] => Array ( [cust] => [Typ] => Standard ) ) [3] => Array ( [2] => Array ( [cust] => [Typ] => ) [3] => Array ( [cust] => [Typ] => permier ) ) [7] => Array ( [4] => Array ( [cust] => [Typ] => Standard ) ) )</pre> <p><br /></p>
P粉022140576P粉022140576506 Tage vor598

Antworte allen(2)Ich werde antworten

  • P粉132730839

    P粉1327308392023-08-23 17:06:46

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

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

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

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

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

    Antwort
    0
  • P粉998100648

    P粉9981006482023-08-23 15:20:11

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

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

    Antwort
    0
  • StornierenAntwort