empty _get php isset

_get - get php url



isset PHP isset($_GET[''algo''])? $_GET[''algo'']: '''' (8)

Estoy buscando expandir mi conocimiento de PHP, y encontré algo que no estoy seguro de qué es o cómo buscarlo. Estoy mirando el código de emisión php.net, y veo isset($_GET[''something'']) ? $_GET[''something''] : '''' isset($_GET[''something'']) ? $_GET[''something''] : ''''

Entiendo las operaciones normales de emisión, como if(isset($_GET[''something'']){ If something is exists, then it is set and we will do something } pero no entiendo el?, Repitiendo el comando get nuevamente, el: o el ''''. ¿Puede alguien ayudarme a descomponerlo o, al menos, señalarme la dirección correcta?


? se llama operador ternario (condicional): example


Desde PHP 7 puedes escribirlo aún más corto:

$age = $_GET[''age'']) ?? 27;

Y esto significa que si se proporciona age param en la url, se establecerá en $age var o se establecerá de forma predeterminada en 27

Ver todas las novedades de php 7.


Eso se llama un operador ternario y se usa principalmente en lugar de una sentencia if-else.

En el ejemplo que dio, se puede usar para recuperar un valor de una matriz.

isset($_GET[''something'']) ? $_GET[''something''] : ''''

es equivalente a

if (isset($_GET[''something''])) { $_GET[''something'']; } else { ''''; }

Por supuesto, no sirve de mucho a menos que lo asigne a algo, y posiblemente incluso asigne un valor predeterminado para un valor enviado por el usuario.

$username = isset($_GET[''username'']) ? $_GET[''username''] : ''anonymous''


Has encontrado al operador ternario . Su propósito es el de una declaración básica if-else. Las siguientes piezas de código hacen lo mismo.

Ternario:

$something = isset($_GET[''something'']) ? $_GET[''something''] : "failed";

Si-si no:

if (isset($_GET[''something''])) { $something = $_GET[''something'']; } else { $something = "failed"; }


Lo que está viendo se llama operador ternario , y puede encontrar la implementación de PHP aquí . Es una declaración if else .

if (isset($_GET[''something'']) == true) { thing = isset($_GET[''something'']); } else { thing = ""; }


Se le conoce comúnmente como ''taquigrafía'' o el operador ternario .

$test = isset($_GET[''something'']) ? $_GET[''something''] : '''';

medio

if(isset($_GET[''something''])) { $test = $_GET[''something'']; } else { $test = ''''; }

Para descomponerlo:

$test = ... // assign variable isset(...) // test ? ... // if test is true, do ... (equivalent to if) : ... // otherwise... (equivalent to else)

O...

// test --v if(isset(...)) { // if test is true, do ... (equivalent to ?) $test = // assign variable } else { // otherwise... (equivalent to :)



Si desea una cadena predeterminada por defecto, entonces una de las formas preferidas es una de estas (según su necesidad):

$str_value = strval($_GET[''something'']); $trimmed_value = trim($_GET[''something'']); $int_value = intval($_GET[''somenumber'']);

Si el parámetro url something no existe en la url, entonces $_GET[''something''] devolverá null

strval($_GET[''something'']) -> strval(null) -> ""

y su variable $value se establece en una cadena vacía.

  • trim() puede strval() a strval() dependiendo del código (por ejemplo, un parámetro Name podría querer usarlo)
  • intval() si solo se esperan valores numéricos y el valor predeterminado es cero. intval(null) -> 0

Casos a considerar:

...&something=value1&key2=value2 (típico)

...&key2=value2 (el parámetro que falta en url $ _GET devolverá nulo para él)

...&something=+++&key2=value (el parámetro es " " )

Por qué este es un enfoque preferido:

  • Encaja perfectamente en una línea y es claro lo que está pasando.
  • Es legible que $value = isset($_GET[''something'']) ? $_GET[''something''] : ''''; $value = isset($_GET[''something'']) ? $_GET[''something''] : '''';
  • Menor riesgo de error de copiar / pegar o un error tipográfico: $value=isset($_GET[''something''])?$_GET[''somthing'']:'''';
  • Es compatible con php más antiguo y más nuevo.

El modo de actualización estricta puede requerir algo como esto:

$str_value = strval(@$_GET[''something'']); $trimmed_value = trim(@$_GET[''something'']); $int_value = intval(@$_GET[''somenumber'']);