• # Mauvaise compréhension des paramètres $a et $b

    Posté par . En réponse au message bug PHP5 ou bug entre le clavier et la chaise ?. Évalué à 2.

    Mais c'est vrai que sur ces fonctions, la doc php est parfois obscure (pour référence : http://fr2.php.net/manual/fr/function.array-udiff.php ).

    La fonction que tu donnes à array-udiff pour la comparaison (en l'occurence mns_diffu_algo) recoit deux paramètres, qui sont respectivement des valeurs provenant de l'un et de l'autre des tableaux. Pas des tableaux !

    Cette fonction doit retourner un résultat de type entier, dont la position par rapport à 0 va affecter le comportement du diff. Et le diff te retourne les éléments du premier tableau qui ne se retrouvent pas dans le deuxième.

    En l'occurence dans mns_diffu_algo, tu dois tester (en imaginant que $a et $b prennent successivement n'importe quelle valeur de chaque tableau) :

    Si $a == $b : return 0;
    Si $a > $b : return 1;
    Si $a < $b : return -1;

    PS : il semble important que la fonction fournie à array_udiff puisse retourner du positif et du négatif, d'ou l'intérêt de comparer des valeurs numériques exclusivement (donc peut-être se débarasser du 'v' avant le test).