Números impares
March 09, 06 by Max VillegasResulta que los duños de una de la páginas en que estoy trabajando querían hacer un truquillo para que si el día era par (2, 4, 6, etc.) los correos de un formualrio fuesen enviado a una dirección y si el día era impar (1, 3, 5, etc.) fuesen a otro email.
No era la primera vez que me enfrentaba a este sencillo dilema de los nones y pares (útil para ir alternando, por ejemplo, el background de los comentarios). Anteriormente había recurrido a trucos poco elegantes como hacer bucles dejando una variable que me sirviera de ancla al resetearla a 0 vuelta por medio.
$vuelta=0;
for ($i=0; $i<31; $i++){
if ($vuelta==0){
$background="#FFFFFF"; //hacer una cosa
$vuelta+= 1;
}
else{
$background="#000000"; //hacer otra
$vuelta = 0;
}
}
Otra posibilidad, tal vez menos burda que la anterior, era meter los números pares en un array para luego comprobar si el número del día estaba dentro o no.
$pares=array (2,4,6,8,10,12,14,16,18,20,22,24,26,28,30);
$dpi= date(d);
if (in_array ($dpi, $pares)) {
$background="#FFFFFF"; //hacer una cosa
else{
$background="#000000"; //hacer otra
}
Pero el que busca siempre encuentra. La verdad es que tenía el razonamiento claro (un número impar solo es divisible por si mismo para que de como resultado un número natural, el 1), pero no sabía como expreslo en PHP. Porbando a tientas ponía
if (!$num/$num){//es par}
if ($num/$num){//es impar}
Pero no daba, al final por ahí encontré una solución para javascript que me sirvió, dado que la sintaxis es prácticamente la misma. No sé mucho cómo va (para las matemáticas soy un asco), pero el caso es que dependiendo si el numero es par o impar “$dpi % 2″ arroja como resultado 0 ó 1. Y por cierto, como solución es mucho más elegante que las otras, incluso se podría usar para crear automáticamente lun array con números primos y otro con pares, por si llegase a ser necesario ir almacenando los números para su uso posterior.
$dpi= date(d);
if ($dpi % 2){
$background="#FFFFFF";
}else{
$background="#000000";
}
Technorati tags: Tutoriales, PHP
No related posts.