0
votes

Supprimer le même tableau de noms

Voici mon préfache

Array
(
    [entity_id] => 85
    [name] => Round Bur

)
Array
(
    [entity_id] => 86
    [name] => testile Bur

)
Array
(
    [entity_id] => 87
    [name] => Shovel

)


13 commentaires

Si vous souhaitez simplement supprimer le dernier élément, utilisez Array_Pop ()


@ Vishnubhadoriya, je pense que c'est plus que le dernier (dans l'exemple) est le seul deplicaté, ce n'est peut-être pas toujours le cas.


@Vishnubhadoriya qui ne résoudra pas le problème si la dupe était placée comme premier et deuxième éléments du tableau


Non seulement durer ....!


Dupliqué possible de Comment supprimer des valeurs en double d'un tableau multidimensionnel dans PHP


@treybake, problème est qu'il s'agit d'un tableau d'objets.


@Nigelren conversion est une chose


@Nigelren $ array = (tableau) $ objet


@treybake, comme ils utilisent $ _ product-> getdata () , je suppose que ce n'est pas simplement un objet clair et que les données peuvent ne pas être publiques.


@Nigelren Qu'est-ce qui vous fait supposer cela? Et j'ai également réalisé que la production n'est pas claire. Est-ce que cet exemple de sortie d'un print_r () ou est-ce la sortie après ce code?


La sortie vous a-t-elle posté un exemple d'une seule itération dans la boucle ou est-ce qu'elle est sortie après la boucle?


@treybake, le code montre clairement le print_r ($ _ product-> getdata ()); à l'intérieur du foreach () boucle.


@Nigelren il fait, ce qui signifie que la cible Dupe est valide


3 Réponses :


2
votes

Vous pouvez mettre tous les résultats dans un tableau, que vous ne les ajoutez que si le nom n'existe pas déjà: xxx


0 commentaires

2
votes

Vous pouvez épisser la ligne répétée qui contient la même valeur: xxx

Démo

implémentation de votre cas ressemble à la suivante: xxx


0 commentaires

1
votes

Une dernière version, il suffit de conserver une trace des noms ajoutés, mais ajoutez également l'original à la sortie plutôt que la matrice de données ...

$output = [];
$existingNames = [];
foreach ($_productCollection as $product){
    $productName = $product->getData()['name'];
    if ( !isset($existingNames[$productName]))  {
        $existingNames[$productName] = true;
        $output[] = $product;
    }
}


3 commentaires

Bizarre compte tenu de cela essentiellement fonctionne de la même manière que la deuxième réponse qui a obtenu un uppote. heureux de compenser ...


@Nick, merci, c'est plus un cas s'il y a quelque chose qui ne va pas avec mon code, je préfère dire que les gens disent. Bien que parfois, il peut s'agir de quelqu'un qui joue: - /


Je ne pouvais pas être d'accord avec toi plus. Mais pour la plupart qui ne semble pas être ce que ça marche ...