Nota: str_pos, tiene un problema y es que si existiera un "substring no numerico" que tubiera un punto, lo trasformaria en numerico i float dando cómo resultado 0.00
Cambios en el código:
Código PHP:
setlocale (LC_ALL, "sp");
if (is_numeric($val) && (substr_count($val,',') > 0)) $cad_transf[] =number_format($val,2);
IMPORTANTE: Porque NO funciona con is_float() pero SI funciona con is_number(), si php es type juggling?
En el manual no pone nada al respecto, ni en los comentarios.
Código comprovar esto:
Código PHP:
<php>
$i = '4.5';
if (is_double($i)) echo 'Es float';
if (is_numeric($i)) echo 'Es numero';
if (is_integer($i)) echo 'Es entero';
echo '<'br>';
$i = 4.5;
if (is_double($i)) echo 'Es float';
if (is_numeric($i)) echo 'Es numero';;
if (is_integer($i)) echo 'Es entero';
echo '<br>';
echo '12.25='.is_numeric('12.25').'<br>'; // Return True
echo '12,25='.is_numeric('12,25').'<br>'; // Return False
echo '12.25='.is_float('12.25').'<br>'; //Return False
echo '12,25='.is_float('12,25').'<br>; //Return False
?>