PHP WTF: Incrementos y decrementos sobre valores NULL

Publicado el 25 septiembre 2015 por Jocual

Hoy veremos un PHP WTF que me ha llamado mucho la atención y es el comportamiento de PHP ante los incrementos y decrementos con valores NULL.

Véase el siguiente:

<?php $a = [NULL,NULL,NULL,NULL];
$a[0]++;
++$a[1];
$a[2]--;
--$a[3];
var_dump($a);
?>

Contra toda expectativa, el resultado es el siguiente:

array(4) 
{
[0]=> int(1)
[1]=> int(1)
[2]=> NULL
[3]=> NULL 
}

Los incrementos los realiza, pero los decrementos no. ¿La explicación? La tenemos como casi siempre en la documentación de PHP http://ca3.php.net/manual/en/language.operators.increment.php parece que los decrementos de null no los realiza y los incrementos los deja con valor ‘1’.