"Frederic Noyer" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hello there ! > I am trying to fill and then compare two arrays: one filled by a > foreach construct, and the second by a while construct. > I check both with a print_r to be sure that both are correctly filled > (which seems to be the case). But then, when I try to compare them with > a array_diff , the result is incoherent (at least to me...). I have > tried several variant, but I don't understand what's wrong. Sure you > guys can tell me where is my mistake. > > Here is the code: > > <? > > // creates first array (from a _POST[''] ) > foreach ($_POST['input_auteur'] AS $aut_ligne) { > $part_ligne = explode(",",$aut_ligne); > $arr1[] = (string) $part_ligne['2']; > } > echo "Array from POST :"; > print_r ($arr1); > > // creates second array (from SQL query) > $sqlListAut = 'SELECT aut_id FROM mr_ecrit WHERE doc_id = ' . > $_GET['docu']; > $resultListAut = mysql_query($sqlListAut); > while ($recListAut = mysql_fetch_array($resultListAut)) { > $arr2[] = (string) $recListAut['aut_id']; > } > echo "Array from SQL:<BR>"; > print_r ($arr2); > > // comparing both arrays to detect if there is elements in the first > array which are not present in the second array $result = > array_diff($arr1, $arr2); > echo "array_diff results :"; > print_r($result); > ?> > > Here is a typical output: > __________________________________________ > Array from POST: Array ( [0] => 2 [1] => 3 [2] => 4 ) > > Array from SQL : Array ( [0] => 3 [1] => 4 ) > ****** > array_diff results : Array ( [0] => 2 [1] => 3 [2] => 4 ) > __________________________________________ > > As you can see, the array_diff seems to always return all elements of > the first array.
I think this is correct because the 3 key/value pairs from the first array are NOT in the second one. I think the combination of key and value are relevant for array_diff(). So if you had: Array from POST: Array ( [0] => 2 [1] => 3 [2] => 4 ) Array from SQL : Array ( [0] => 2 [1] => 3 ) ****** The diff would be: array_diff results : Array ( [2] => 4 ) Regards, Torsten > > Thanks for your help. > Best regards, > > Fred Noyer -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php