2010-04-13 3 views
3

Salut je veux comparer toutes les valeurs de 2 tableaux et finir avec un vrai ou faux. J'utilise le code ci-dessous et je pensais que le résultat serait faux. mais ce n'est pas le cas, lorsque la dernière ligne fonctionne, je me attends quelque chose d'affichage commeComparer aux valeurs de deux tableaux en PHP

Array ([0] => 0)

mais je reçois pas d'affichage si on suppose que php est heureux qu'il y ait aucune différence

mon code est

 $before = array('1', '1', '0', '0', '1', '0') ; 
     $after = array('0', '1', '0', '0', '1', '0') ; 

     $new_array= array_diff($before,$after); 

     print_r ($new_array) ; 

sûrement le array_diff devrait repérer une différence ici? toute aide serait grande merci

Répondre

8

array_diff donne quels éléments sont en $before mais pas $after. Puisque les deux tableaux sont constitués de '0' et '1', il renvoie un tableau vide.

Ce que vous cherchez est array_diff_assoc, qui regarde les clés et les valeurs ensemble.

Notez que la sortie que vous obtenez ne sera pas Array([0] => 0), mais plutôt Array([0] => 1), car elle donne les éléments du premier tableau qui n'existe pas dans l'autre. Si vous souhaitez l'autre sortie, vous devez faire array_diff_assoc($after, $before).

0

Oui, array_diff fait une différence. Il trouve les différences entre les tableaux suivants avec le premier. Cependant, il ne compare pas 0 à 0 et 1 à 1. Il vérifie simplement si chaque valeur dans Array1 est dans Array2 ... ArrayN. Cette fonction retourne un tableau de toutes les occurrences dans Array1 qui n'ont pas été trouvées dans les autres tableaux, pas un vrai/false booléen. See example 1 in the documentation.

3
$before = array('1', '1', '0', '0', '1', '0') ; 
    $after = array('0', '1', '0', '0', '1', '0') ; 

    $new_array= array_diff_assoc($before,$after); 

    print_r ($new_array) ; 
Questions connexes