0
votes

Si le tableau existe dans une matrice - Array associatif multidimensionnel

J'ai deux tableaux multidimensionnels. Je veux vérifier chaque élément dans le tableau 1 et voir si elle est en tableau 2 et vice versa.

Par exemple: xxx

Je veux vérifier par commander .

alors quelque chose comme ceci: xxx

J'ai pensé à faire foreach en boucle pour les deux mais Cela ne me laissera pas savoir ar # il manque.

Comment puis-je y parvenir?


5 commentaires

Utilisez In_array () Fonction Ça devrait fonctionner pour vous.


Une approche serait la suivante: cartographier les deux tableaux sur leur commande, puis utiliser array_diff pour calculer la différence entre les deux.


in_array fonctionne si l'identifiant est différent?


De plus, comme une tête en tête, vous ne devez pas utiliser des chaînes supposées comme indices de votre réseau.


Vous devriez probablement ajouter quelques guillemets à ID et commander où vous définissez le tableau.


5 Réponses :


1
votes

Vous pouvez utiliser array_uintersect code> ou Array_udiff Code> Pour trouver les valeurs dans chaque matrice qui sont identiques ou différentes en fonction de la valeur de la touche code> de la commande code>: xxx pré>

sortie: p>

Array
(
    [1] => Array
        (
            [id] => 2
            [order] => 33278
        )

)

Array
(
    [0] => Array
        (
            [id] => 1
            [order] => 123238
        )
    [2] => Array
        (
            [id] => 3
            [order] => 8892372
        )
)

Array
(
    [0] => Array
        (
            [id] => 1
            [order] => 123238
        )
    [2] => Array
        (
            [id] => 3
            [order] => 8892372
        )
)


7 commentaires

Merci mais ce serait possible de montrer la colonne ID aussi?


@Timmybalk Bien sûr - mais si la valeur id est différente, même si la valeur la valeur est la même qui doit toujours être comptée comme la même valeur?


Il devrait être compté comme des valeurs différentes mais montrent toujours les deux. Aussi comment est-ce appelé dans la programmation?


Donc, juste pour être clair, pour votre échantillon de données, il y aurait NON Valeurs correspondantes entre $R1 et $r2 ?


Donc, l'identifiant est incrémenté automatique qui est quelque chose que je ne peux pas changer, mais il y aura des valeurs correspondantes de commander dans arr1 et arrate . Donc si id est différent, même si la valeur est identique, il ne doit pas être traité comme la même valeur


@Timmybalk Toutes mes excuses pour le silence de la radio ... dormir dormir. Basé sur la réponse que vous avez acceptée, je pense que cela pourrait être une méthode plus simple pour atteindre le résultat souhaité.


Je vous remercie beaucoup pour votre aide! :)



1
votes

Essayez quelque chose comme ceci:

foreach ($arr1 as $arrone){
      foreach ($arr2 as $arrtwo) {
            if (!in_array($arrone['order'], $arrtwo)) {
                  echo "abc ";
            }
      }
}


3 commentaires

Il est également possible de le faire avec foreach trop non?


Probablement. Gimmie une sece je vais essayer de le faire


@Timmybalk j'ai édité ma réponse, maintenant il y en a un avec foreach aussi



1
votes

Vous pouvez aborder comme celui-ci en utilisant array_column et array_intersect_key xxx

exemple: - https://3v4l.org/imbao


7 commentaires

Comment obtenez-vous ceux qui sont dans arr1 mais pas dans arr2 et vice versa?


Oui cela fonctionne, mais consultez ceci: 3v4l.org/dwvmo . Arr2 n'est plus associatif. Comment puis-je comparer maintenant?


@Timmybalk Vérifiez ceci pour plus de détails: 3v4l.org/nttpl


Ok merci mais qu'en est-il de cela? 3v4l.org/dwvmo Comment puis-je faire ce travail? Le $R2 est simplement une matrice régulière, pas une matrice associative. J'ai juste besoin de ça pour travailler


@Timmybalk Dans le deuxième cas, vous pouvez utiliser comme celui-ci 3v4l.org/f2ga5 , 3v4l.org/hrvm8


Aussi, pourquoi utilisez-vous array_commine sur arrate et arr2 ? Pourquoi combinez-vous le même tableau?


@Timmybalk array_commine pour le faire clés => valeurs



0
votes

Vous pourriez utiliser Array_UItersect avec une fonction de rappel personnalisé Pour vérifier la valeur ou la commande code> pour obtenir toutes les intersections.

Array
(
    [1] => Array
        (
            [id] => 2
            [order] => 33278
        )

)
Array
(
    [0] => Array
        (
            [id] => 1
            [order] => 123238
        )

    [2] => Array
        (
            [id] => 3
            [order] => 8892372
        )

)
Array
(
    [0] => Array
        (
            [id] => 1
            [order] => 349483
        )

    [1] => Array
        (
            [id] => 2
            [order] => 9837283
        )

)


0 commentaires

1
votes

Ignorez vos identifiants, construisez une liste des numéros de commande à partir de votre deuxième tableau, puis boucle via votre matrice initiale pour vérifier si le numéro de commande n'est pas contenu dans:

Données: p> xxx pré>

méthode: p> xxx pré>

sortie: p>

123238 order number is not contained
8892372 order number is not contained


0 commentaires