Convertir un switch/nido de ifs en un array

Optimizar un switch o nido de ifs en una array tiene sus ventajas a la hora de optimizar/visualizar el código.

Por ejemplo tanto si tenemos un nido de ifs …

If($tipo_animal==0){
  $nombre="Cangrejo";
}elseif($tipo_animal==1){
  $nombre="Oso";
}elseif($tipo_animal==2){
  $nombre="Lobo";
}elseif($tipo_animal==3){
  $nombre="Ballena";
}elseif($tipo_animal==4){
  $nombre="Caballo";
}else ....

… como si tenemos un switch …

Switch ($tipo_animal)
case 0:
$nombre="Cangrejo";
break;
case 1:
$nombre="Oso";
break;
case 2:
$nombre="Lobo";
break;
case 3:
$nombre="Ballena";
break;
case 4:
$nombre="Caballo";
break;
...

Podemos simplificar el código creando un array:

//crea un array con los nombres, posición 0 tiene Cangrejo, 1 Oso ... etc ... etc ...
$nombre_animal=array('Cangrejo','Oso','Lobo','Ballena','Caballo', '...');
//accediendo así
$nombre=$nombre_animal[$tipo_animal];

Si por el contario nuestra array necesita otro tipo de clave podemos asignársela también como si de una colección se tratase:

//crea un array con los nombres, clave animal1 tiene Cangrejo, animal2 Oso ... etc ... etc ...
$nombre_animal=array('animal1'=>'Cangrejo', 'animal2'=>'Oso', 'animal3'=>'Lobo', 'animal4'=>'Ballena', 'animal5'=>'Caballo', '...');
//accediendo así
$nombre=$nombre_animal[$clave_animal];

PHP tiene un gran surtido de funciones para la utilización de arrays.
Documentación PHP.net

Unicef y las minas anti-persona

Vía Zarqun.com me he enterado de la nueva campaña de Unicef contra las minas antipersonas.

UNICEF tira de ingenio y se saca de la chistera esta magnífica campaña de publicidad. Como veremos en la imagen que se adjunta la campaña es sencilla pero más eficaz y directa no puede ser.
Si después de esto la gente no toma conciencia del peligro de las minas antipersona es muy posible que no sean personas …

Subir archivos de más de 2 megas en php

Antes que nada decir que aquí no voy a enseñar como subir archivos, sino como permitir subir archivos mayores de 2 megas centrándome únicamente en la configuración necesaria para poder hacerlo. Si andas buscando un script para subir archivos desde PHP «googlea» y encontrarás.

En PHP el tamaño máximo por defecto para subir archivos es de 2 megas.
Si deseamos aumentar el tamaño deberemos de cambiar la configuración de algunos parámetros.

¿Qué tengo que modificar?
El archivo php.ini contiene la configuración de PHP. En concreto los parámetros son:

  • post_max_size: tamaño máximo de los datos enviados por POST.
  • upload_max_filesize: tamaño máximo al subir archivos.
  • max_execution_time: tiempo máximo de ejecución de cada script en segundos.
  • max_input_time: tiempo máximo de sepera en la recepción de datos.

Voy a citar algunos métodos para modificar dichos parámetros.


1.-Configurar directamente el php.ini

Editando directamente los parámetros del archivo php.ini se soluciona el problema.

Vamos a poner de ejemplo 10 Mb como máximo al subir archivos y un tiempo de espera y ejecución de 15 minutos, es decir 900 segundos.

Buscamos los parámetros dentro del archivo.

;;;;;;;;;;;;;;;;;;;

; Resource Limits ;

;;;;;;;;;;;;;;;;;;;

max_execution_time = 900

max_input_time = 900

; Maximum size of POST data that PHP will accept.
post_max_size = 10M

; Maximum allowed size for uploaded files.

upload_max_filesize = 10M

2- Crear un archivo .htaccess

Otra forma es cambiar la configuración desde un archivo .htaccess. Crea el archivo y escribe el siguiente código :


php_value upload_max_filesize 100M

php_value post_max_size 100M

php_value max_execution_time 1000

php_value max_input_time 1000


Si no sabes crear un archivo .htaccess desde windows te dejo un tutorial de como hacerlo.

Ahora súbelo a la raíz de tu servidor y ya esta.


3.- Cambiar la configuración en tiempo de ejecución.

La forma más personalizada es mediante código PHP. Y digo que es la más personalizada porque te permite cambiar la configuración desde cualquier parte del código PHP. Utilizando la «función» ini_set.



ini_set(‘post_max_size’,‘100M’);
ini_set(‘upload_max_filesize’,‘100M’);
ini_set(‘max_execution_time’,‘1000’);
ini_set(‘max_input_time’,‘1000’);

// script de subir archivos
?>