0
votes

Fusionner le deuxième niveau de tableau basé sur le niveau supérieur (valeurs partagées)

Je veux fusionner le niveau supérieur de la matrice, de sorte que toutes les valeurs du deuxième niveau partageant le même parent forment une seule matrice à ce parent.

Array 1: P>

Array
(
    [0] => Array
        (
            'C1' => Array (C1_complete, C1_29-95, C1_49-95),
            'AC' => Array (AC_complete, AC_29-95)
        )

)


16 commentaires

Comment comprendre que c1 == com1 ...?


Désolé - réparé maintenant - c'était une faute de frappe.


Vous n'avez pas réparer le résultat souhaité.


Mélangez votre pardon, monsieur - fixé maintenant.


Oui, maintenant ça a du sens. 😉


Vos tableaux vont-ils toujours être de la même longueur?


Une autre question est la suivante: votre réseau de haut niveau ne contient-il toujours qu'une seule entrée?


@Innervisions non, les longueurs de réseau peuvent varier.


@Kikosoftware Oui - Le niveau supérieur contient uniquement une entrée.


Je pense que Innervisions signifie: Les array 1 et le tableau 2 sont-ils toujours de la même longueur? Nous comprenons que le nombre d'entrées dans les deux peut varier. Mais si Array 1 a 10 entrées alors Array 2 aura également 10 entrées?


@Kikosoftware Oui, c'est correct. Les premier et seconds tableaux auront toujours le même nombre d'entrées.


Pourquoi avez-vous besoin d'une array 1, puisque toutes les informations semblent présentes dans le tableau 2?


@ user136649 Avez-vous essayé?


@Kikosoftware Si vous pouvez obtenir le résultat de Just Array 2, il serait satisfaisant d'ignorer la matrice 1.


En fait, pourquoi ne faisons-nous pas cela plus difficile. Supposons que les colonnes sont ce qu'on alignement et ce tableau 2 ne contienne pas le préfixe qui rend le tableau 1 redondant. C'est Array1 [2] s'aligne avec Array2 [2].


Votre solution avec Just Array 2 est bien tant que cela fonctionne, je ne peux pas l'exécuter maintenant, mais je vais l'exécuter à la première occasion de le tester.


3 Réponses :


0
votes

Si je n'utilise que Array 2, et un simple foreach boucle , je peux le faire de cette façon: xxx

La sortie est la suivante: < Pré> xxx

C'est bien si ce code est dans une fonction: xxx

La sortie reste la même.


0 commentaires

0
votes

Pour vos tableaux, vous n'avez pas besoin de la première boucle, mais si vous avez plusieurs tableaux dans votre tableau. Juste boucle et grep pour les articles commençant par la clé: xxx

avec vos tableaux donnés: xxx


4 commentaires

Merci! Je t'ai upvote - je suis nouveau alors que mes upvotes ne montrent pas publiquement


En fait, cela ne fonctionnera pas. Si vous changez $ Array2 à $ array2 [0] alors il fonctionne. Une explication serait bien.


foreach ($ aray1 [0] comme $ k) $ résultat [0] [$ k] = preg_grep ("/ ^ $ k /", $ array2 [0]); fonctionnerait également. .


J'ai enlevé mon bowvote. Ce n'est pas une solution efficace, mais elle est (possible) très courte. Je ne savais pas preg_grep () pourrait filtrer un tableau, mais il est utile de savoir.



0
votes

Eh bien, les deux simples et élégant semble très improbable pour moi dans ce cas car cela pourrait être une opinion basée sur celle-ci. Un simple pourcheach est le moyen le plus facile et le plus efficace d'y parvenir. Cependant, pour l'élégance, vous pouvez utiliser Array_walk , array_fill et https://3v4l.org/ VHFLH7


1 commentaires

Wow, cette solution est assez instructive à un niveau supérieur - je vous remercie, monsieur pour votre entrée éclairante! Upvoted.