Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté




Wiliwilliam
PHP soustraire un tableau à un autre (texte)
 1  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37157
Karma: 17398
Imaginons que j'ai deux tableaux php
$table1 = array("marion", "didier", "gateau", "citron", "654987", "zimbabwe", "national")
et
$table2
= array( "gateau", "zimbabwe")

quel est le moyen le plus rapide pour obtenir ce tableau:
$tablesoustraction = array("marion", "didier", "citron", "654987", "national")

qui est la soustraction des valeurs similaires entre $table2 et $table1.

Il y a une fonction? ou je vais devoir scripter ça?


EDIT: je vais tenter array_diff() pour voir 😉

Contribution le : 21/08/2017 11:39
_________________
Signaler

Invité
 1  #2
FantômeInvité
@Wiliwilliam :

je dirais : in_array();

foreach($table1 as $key=>$t){
if(in_array($t, $table2)){
unset($table1[$key]);
}
}
echo "<pre>";
print_r($table1);
echo "</pre>";

j'ai pas testé, tu me dis si ça marche ?

Edit : j'étais curieux donc j'ai testé. ça fonctionne mais il manquait un ; et une ) (en gras)

Contribution le : 21/08/2017 12:06
Signaler

Wiliwilliam
 0  #3
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37157
Karma: 17398
@Zzzzz

Merci pour ta réponse rapide.
Il se trouve que la fonction diff_array() répond parfaitement à ma demande finalement 😃

En tout cas je garde in_array() sous le bras en cas de soucis 😉

Contribution le : 21/08/2017 12:12
_________________
Signaler

Invité
 1  #4
FantômeInvité
@Wiliwilliam

Tu parle de array_diff plutôt non ?
Effectivement, c'est plus rapide et moins destructeur que ma solution.
Par contre pour un tableau associatif je crois pas que ça marche. Dans l'exemple ici il supprime "green" même si il n'a pas la même clé.

Contribution le : 21/08/2017 12:18
Signaler

Wiliwilliam
 0  #5
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37157
Karma: 17398
@Zzzzz
array_diff_assoc() prend en compte les clés visiblement

Contribution le : 21/08/2017 12:21
_________________
Signaler

Invité
 0  #6
FantômeInvité
Exact. Bon décidément ma contribution n'a servi à rien. Je retourne bouder 😉

Contribution le : 21/08/2017 12:23
Signaler

Arsenick
 0  #7
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@Wiliwilliam

La solution la plus rapide c'est de faire un Merge puis un Unique:

$table1 = array("marion", "didier", "gateau", "citron", "654987", "zimbabwe", "national");
$table2 = array( "gateau", "zimbabwe");

$tmp = array_merge($table1,$table2);
$tablesoustraction = array_unique($tmp);

Ou la version feignasse (moins lisible):
$tablesoustraction = array_unique(array_merge($table1,$table2));

Attention cette méthode n'est utilisable que si les clés n'ont pas d'importance.

Contribution le : 23/08/2017 21:15
Signaler


 Haut   Précédent   Suivant






Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.