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: 19 años, 5 meses
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