recherche

Maison  >  Questions et réponses  >  le corps du texte

Regroupez les données du tableau 2D à l'aide des valeurs de colonne pour générer un tableau 3D

<p>J'ai un tableau multidimensionnel que je souhaite regrouper en fonction des valeurs d'une colonne spécifique. </p> <p>Je souhaite effectuer un regroupement en fonction du <code>level</code>, mais je ne connais pas la valeur du niveau à l'avance. Donc, je ne peux pas dire <code>while $i < 7</code> comme dans la boucle <code>for</code> ; est la clé de niveau de la valeur maximale, et même si je le savais, je ne suis pas sûr d'avoir besoin de le faire. </p> <pre class="brush:php;toolbar:false;">[ ['cust' => 'XT8900', 'type' => ['cust' => 'XT8944', 'type' => ['cust' => 'XT8922', 'type' => ['cust' => 'XT8816', 'type' => ['cust' => 'XT7434', 'type' => ]≪/pré> <p>Résultat souhaité : </p> <pre class="brush:php;toolbar:false;">Array ( [1] => [0] => [client] => XT8900 [type] => ) [1] => [client] => [type] => ) ) [3] => [2] => [client] => [type] => ) [3] => [client] => [type] => permis ) ) [7] => [4] => [client] => [type] => ) ) )</pré> <p><br /></p>
P粉022140576P粉022140576506 Il y a quelques jours596

répondre à tous(2)je répondrai

  • P粉132730839

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

    La meilleure approche est que si vous contrôlez la création du tableau initial, configurez-le simplement au début lors de l'ajout d'entrées.

    S'il n'y a pas de contrôle, créez un tableau temporaire pour le tri :

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

    De cette façon, vous obtenez le formulaire que vous souhaitez avec toutes les références réunies.

    Si possible, construisez le tableau comme ceci au départ.

    répondre
    0
  • P粉998100648

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

    Tout d'abord, vous devez les regrouper par niveau

    Utilisez foreach pour parcourir le tableau, vérifiez si le niveau est le même que l'élément précédent, puis regroupez-le avec ce tableau

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

    La sortie de

    print($grouparr); sera affichée dans le format souhaité

    Vous pouvez aussi essayer

    print($grouparr[7]);

    montre

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

    ou

    print($grouparr[3]);

    montre

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

    répondre
    0
  • Annulerrépondre