note 55169 deleted from function.array-diff by betz
| From: | betz@php.net | Date: | Wed, 27 Jul 2005 06:07:50 +0000 |
| Subject: | note 55169 deleted from function.array-diff by betz | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-92526@lists.php.net to get a copy of this message | ||
Note Submitter: jestrada at webmedia dot com dot mx
Reason: non-english
----
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.