Ver Mensaje Individual
  #12 (permalink)  
Antiguo 25/05/2014, 13:27
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Uso de for y switch

@lolainas : pues posiblemente si me guio por el criterio de "numero de invocacion a funciones" pero a lo que me referia de tu solucion es que usas filter_input() para nada en especial y "supongo" que esa funcion debe tener un costo alto...

Y para ser justos en la comparacion... toca encasular algo de su codigo:

Código PHP:
function nomNum(){
    return 
filter_input(INPUT_POST'txtNumero'FILTER_CALLBACK, ['options' => function($n) {
    return 
implode(', 'array_map(function($n) {
        return [
'cero''uno''dos''tres''cuatro''cinco''seis''siete''ocho''nueve'][$n];
    }, 
str_split($n)));
}]);
}

echo 
nomNum(); 
1 + 1 + 1 + 1 + 1 + 1= 6 "function calls"


Código PHP:
function nomNum($numero){
    
$nombres = array('Cero''Uno''Dos''Tres''Cuatro''Cinco''Seis''Siete''Ocho''Nueve');
    return 
$nombres[$numero];
}
 
$num 34234;
echo 
implode(', 'array_map('nomNum'str_split($num))); 
= 3 "function calls"

Código PHP:
<?php
function nomNum($n){    
    
$d str_split(strval($n));
    return  
implode(' ',array_map(function($d){$nombres = array('Cero''Uno''Dos''Tres''Cuatro''Cinco''Seis''Siete''Ocho''Nueve'); return $nombres[$d];},$d));
}
 
echo 
nomNum(443541);
1 + 1 + 1 + 1 + 1 = 5 "function calls"


Sino hice mal las cuentas... la de Alexis88 seria la de menos function calls efectivamente


EXTRA: su codigo no es compatible con PHP hasta su version 5.5 por esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Solo PHP 5 >= 5.5
  4. echo ['cero', 'uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve'][5];
__________________
Salu2!

Última edición por Italico76; 25/05/2014 a las 15:45