Regroupez les données du tableau 2D à l'aide des valeurs de colonne pour générer un tableau 3D
P粉022140576
P粉022140576 2023-08-22 18:37:00
0
2
574
<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粉022140576
P粉022140576

répondre à tous(2)
P粉132730839

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.

P粉998100648

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
             )
      )
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal