Comment le groupe un tableau multidimensionnel par un particulier subarray valeur?
J'ai un tableau multidimensionnel et suis en train de les regrouper en fonction de la valeur dans une colonne spécifique.
Je vais essayer de les regrouper par level
, mais je ne savez pas vraiment le niveau préalable. Donc, ce n'est pas comme je peux le mettre dans un for
boucle et dire while $i < 7
, parce que je ne sais pas qui 7
est la valeur maximale pour le niveau de la touche, et franchement, je ne suis pas sûr que j'aurais besoin de le faire, même si je l'ai fait...
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
)
)
Ce que j'espère pour produire de l':
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
)
)
)
- S'il vous plaît pardonnez-moi en remuant jusqu'à cette vieille question, mais attendez-vous à l'extérieur de clés de l'ASC? Est votre tableau d'entrée déjà commandé par niveau? (parce que c'est ce qui est affiché). Regardez comment l'on a accepté la réponse se comporte avec un non-ordonnée tableau d'entrée: sandbox.onlinephpfunctions.com/code/... le Plus important: Est-ce des données provenant d'une base de données?
- Beaucoup de réponses ci-dessous ne s'incrémente pas le subarray clés. Avez-vous _actually_need la subarray clés pour être incrémenté?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de les grouper par niveau première
Utilisation foreach de boucle dans un tableau de vérifier si le niveau est le même avec le point précédent, puis un groupe avec ce tableau
La sortie de print($grouparr); affiche comme le format que vous espériez
Vous pouvez également essayer de
Affiche
Ou
Affiche
Meilleure façon, si vous avez le contrôle sur la construction de la table initiale, est juste mettre les choses en place comme ça au début, car vous ajoutez des entrées.
Si pas alors de construire un tableau temporaire de tri:
Vous laisse avec la forme que tu voulais dire et tout est référencé ensemble.
Construire le tableau comme dans la première place, si possible.
account_id
n'a rien à voir avec cette question. Pour toutes ces raisons, je suis surpris qu'il a eu tellement d'upvotes et j'ai downvoted comme une question de principe. La preuve: sandbox.onlinephpfunctions.com/code/... je me soucie de la qualité de l'ancien contenu de ce site, car je l'utilise pour fermer de nouvelles questions, le cas échéant.Voici la solution que j'ai atterri sur un problème identique, enveloppé comme une fonction:
Pour trier $myarray par la clé nommée "niveau" juste le faire:
Ou si vous ne voulez pas comme une fonction, juste pour une fois, ce serait de créer $myNewArray de $myArray regroupés par la touche 'niveau'
Meilleur ans.
$key
et$keyName
sont destinés à tenir. J'ai downvoted cette réponse parce que je ne peux pas donner un sens et je ne sais pas quelles valeurs pour nourrir la fonction.