2010-08-02 14 views
13

En PHP, cuando tiene algo en la URL como "var = true" en la URL, ¿el "verdadero" y el "falso" en la URL se traducen a variables booleanas, o lo hacen igualar el texto 'verdadero' o 'falso'? Por ejemplo, sería, con la url que tiene "var = false" en él:'true' en Obtener variables

if ($_GET['var'] == false) { ... } 

trabajo? ¿O la variable siempre sería verdadera ya que tiene texto en ella?

+0

¿Por qué no lo pruebas? – Ponkadoodle

Respuesta

14

Ellos se pasan como cadenas, por lo que siempre están Truthy a menos que sean una de ellas, que se evalúa como falsa en su lugar:

  • La cadena vacía ''
  • Una cadena que contiene el dígito cero '0'

Para hacer mi vida más fácil acabo de pasar las variables booleanas GET como 1 o 0 y validarlas para que sean uno de esos valores, o decidir sobre un valor predeterminado apropiadamente:

// Default value of false 
$var = false; 

if (isset($_GET['var'])) 
{ 
    if ($_GET['var'] === '1' || $_GET['var'] === '0') 
    { 
     $var = (bool) $_GET['var']; 
    } 
} 
+1

Wow PHP tiene tipo de moldeado, lo que significa que es de otra manera como C++? ¡Dulce! – Nilbert

+1

@Nilbert: [sí.] (Http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting) – BoltClock

+2

@Nilbert Bienvenido a los principios básicos de PHP. :) Los tipos se emiten todo el tiempo implícitamente en PHP. – deceze

17

No, $_GET siempre contendrá solo cadenas. Sin embargo, puede filter para obtener un booleano.

FILTER_VALIDATE_BOOLEAN:
devoluciones TRUE para "1", "true", "on" y "yes". Devuelve FALSE de lo contrario. Si FILTER_NULL_ON_FAILURE se establece, FALSE se devuelve sólo para "0", "false", "off", "no", y "", y NULL se devuelve para todos los valores no booleanos.

Ejemplo:

$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN, 
    array("flags" => FILTER_NULL_ON_FAILURE)); 
+1

+1 No sabía que había un filtro para booleanos. – BoltClock

+1

Un enlace a http://php.net/filter sería apropiado. – deceze

+0

Un poco monstruoso pero muy útil, +1. – zerkms

Cuestiones relacionadas