Cuidado con el operador ternario, ‘?’ en PHP

Hay un detalle con el operador ‘?’ con el que hay que tener cuidado. Es posible que alguna vez te hayas encontrado con este problema: Posiblemente esperarás que se muestre: Gorka es mi nombre. Pero en realidad se muestra: Gorka Esto se debe a que la última cadena pasa a formar parte de la expresión … Read more Cuidado con el operador ternario, ‘?’ en PHP

¿Qué es mejor: array_filter o foreach?

Imagina que tenemos una lista de elementos y queremos saber si alguno de ellos es un email válido. La lista podría ser algo así: Para solucionar el problema seguramente recurrirías a un foreach: Pero tenemos otra opción que muchos programadores no conocen (o no han usado nunca), se trata de la función array_filter. Usando esta … Read more ¿Qué es mejor: array_filter o foreach?

Llamar a una función con una variable en PHP

Si a una variable que contiene el nombre de una función le añadimos un paréntesis estaremos llamando a la función:

function hola()
{
    echo "Hola!\n";
}
 
$nombreFuncion = 'hola';
 
$nombreFuncion(); // Esto funciona
'hola'(); // ¡Y esto también!

Seguro que la primera forma ya la conocías ¿pero sabías que podías hacerlo con una cadena?

¡Deja de usar mysql_query() en PHP!

Si llevas años con PHP seguramente te habrás acostumbrado a las funciones mysql_query() y similares. ¡Deja ya de usarlas! Hay varias razones para olvidarte de ellas: En la versión 7.0 se eliminó por completo el soporte para mysql_query() y las funciones asociadas. Así que si tu proyecto las usa vas a tener que eliminarlas si … Read more ¡Deja de usar mysql_query() en PHP!

Un ejemplo para entender el operador !== (no idéntico) en PHP

El operador ‘!=’ confunde los ceros con false. En casos como este debemos usar ‘!==’:

function numero($valor)
{
    if (is_numeric($valor)) {
        return $valor;
    }
    return false;
}
 
$elNumero = "0";
 
var_dump(numero($elNumero));
 
if (numero($elNumero)!==false) {
    echo "Usando === nos dice que es un número.\n";
}
 
if (numero($elNumero)!=false) {
    echo "Usando == nos dice que es un número.\n";
}
  • Con $elNumero = 1; funciona correctamente.
  • Con $elNumero = 0; el operador ‘!=» da un resultado erróneo.

La razón es que ‘!=’ confunde el número 0 con false.