8768 sujets

Développement web côté serveur, CMS

Bonjour,

Éternellement novice en php je cherche une fonction me permettant de tester si une même valeur existe dans deux tableaux différents.

Si par exemple j'ai deux tableaux :
$array1 = [ 'groupe1', 'groupe2', 'groupe3' ];
$array2 = [ 'groupe4', 'groupe3', 'groupe5' ];

Etant donné qu'ils ont chacun la valeur "groupe3" alors la fonction me retournerait true.

Je suis sûr qu'il existe un fonction toute prête pour cela alors je suis allé voir les fonctions sur les tableaux, mais il y a tellement de fonction de comparaison que je m'y perds, et leur descriptif n'est pas très explicite pour moi...
Modifié par Olivier C (07 Oct 2016 - 20:53)
Salut,

T'as regardé du côté de array_intersect() ?

php.net a écrit :
retourne un tableau contenant toutes les valeurs de array1 qui sont présentes dans tous les autres arguments array2


Dans ton cas je verrais bien
$result = array_intersect($array1, $array2);

if($result !== false){
 echo 'Chouette, il y a des correspondances !'."\n";
 foreach($result as $k => $v){
  echo "-> $v\n";
 }
}


Mais attention car
php.net a écrit :
Note: Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.
ce qui implique que tu devras peut-être normaliser les données à comparer.
Et ben voilà, il suffit de poser la question pour trouver :
<?php
$test = false;
$array1 = array("green2", "red", "blue");
$array2 = array("green", "yellow", "red");
$result = array_intersect($array1, $array2);
if($result)
	$test = true;
var_dump( $test );

Il s'agissait donc de la fonction array_intersect(), mais si vous avez une autre solution je suis preneur.
Si, mais c'était juste pour vérifier le résultat final en booléen qui, pour mes besoins, n'est pas absolument nécessaire. Juste pour tester...