note 55169 added to function.array-diff

From: Date: Wed, 27 Jul 2005 00:04:43 +0000
Subject: note 55169 added to function.array-diff
Groups: php.notes 
Request: Send a blank email to php-notes+get-92517@lists.php.net to get a copy of this message
Esta funcion tiene un bug, al parecer en una variable de contador, ya que en algunas ocasiones llega a regresar elementos vacios en el arreglo del resultado. Esta variable de contador probablemente se encuentre en la parte que va agregando los elementos diferentes entre los arreglos al nuevo arreglo. Aqui una version que hice de la función, solo que esta limitada a comparar el primer arreglo solo con un arreglo mas, y no con n arreglos como la función original del PHP. Fue al hacer esta funcion que me di cuenta del probable lugar del error en la funcion original de PHP Espero les sirva -------- function fcn_array_diff($arr_comparado, $arr_compararEn) //prke no sirve la maldita funcion array_diff que trae por default php { $i_maxComparado = count($arr_comparado); $i_maxCompararEn = count($arr_compararEn); $arr_result[0] = ""; $i_result = 0; // echo "Ini<hr><p>"; for ($i=0; $i<$i_maxComparado; $i++) { $st_valorComparado = chop($arr_comparado[$i]); // echo "<font color=\"cyan\">Comparado: ".$st_valorComparado."</font><p>"; $l_existe = false; for ($j=0; $j<$i_maxCompararEn; $j++) { $st_valorCompararEn = chop($arr_compararEn[$j]); // echo "<font color=\"orange\">Comparar en: ".$st_valorCompararEn."</font><p>"; if ($st_valorComparado == $st_valorCompararEn) { $l_existe = true; break; } } if ($l_existe == false) { $arr_result[$i_result] = $st_valorComparado; // echo "<font color=\"pink\">Agregar: ".$arr_result[$i_result]."</font><p>"; $i_result++; } } $i_maxResult = count($arr_result); for ($i=0; $i<$i_maxResult; $i++) { // echo "<font color=\"blue\">(: ".$arr_result[$i].")</font><p>"; } // echo "fin<hr><p>"; return $arr_result; } ---------- NOTA: Las partes que están comentadas fueron banderas que puse para ir localizando el posible error que menciono. ---- Manual Page -- http://www.php.net/manual/en/function.array-diff.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+55169 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+55169&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+55169&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+55169&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+55169&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+55169&report=yes&reason=non-english Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+55169&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+55169&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#92517) next »