empty - php if(! isset
Prueba simple de PHP Isset (9)
Esto a continuación no parece funcionar como lo esperaría, aunque $ _GET [''friendid''] = 55 está devolviendo NULL
<?PHP
$_GET[''friendid''] = 55;
$friendid = (!isset($_GET[''friendid''])) ? $_GET[''friendid''] : ''empty'';
echo $friendid;
exit;
?>
A partir de la versión de PHP 7 , puede usar el operador de unión nula (doble "?") Para esto:
$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";
En PHP 5.3+, si todo lo que está verificando es un valor " truthy ", puede usar el "operador de Elvis" (tenga en cuenta que esto no verifica la emisión).
$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";
Actualmente estás trabajando con el operador ternario:
$friendid = (!isset($_GET[''friendid''])) ? $_GET[''friendid''] : ''empty'';
Divídalo en una sentencia if-else
y se verá así:
if(!isset($_GET[''friendid'']))
$friendid = $_GET[''friendid''];
else
$friendid = ''empty'';
Mira lo que realmente está sucediendo en la declaración if
:
!isset($_GET[''friendid''])
Observe el signo de exclamación (!) Delante de la función isset
. Es otra forma de decir, "lo contrario de". Lo que está haciendo aquí es verificar que no haya un valor establecido en $_GET[''friendid'']
. Y si es así, $friendid
debería tomar ese valor.
Pero en realidad, se rompería ya que $_GET[''friendid'']
ni siquiera existe. Y no puedes tomar el valor de algo que no está ahí.
Al $_GET[''friendid'']
desde el principio, ha establecido un valor para $_GET[''friendid'']
, por lo que primero if
condición es ahora falsa y la pasa a la opción else
.
En este caso, establezca el valor de la variable $friendid
en empty
.
Lo que desea es eliminar la exclamación y luego el valor de $friendid
tomará el valor de $_GET[''friendid'']
si se ha establecido previamente.
De acuerdo, es posible que haya tenido un problema similar al no estar familiarizado con el! Situación que tenía jasondavis.
Un poco confuso pero descubriendo no tener el! como en ... isset ($ avar) comparado con! isset ($ avar) puede marcar la diferencia.
Así que con el! en su lugar, es más decir un SÍ como en
since $_GET[''friendid''] = 55; has been initialized...
tell me ''no'' - the opposite - that it hasn''t and set it to empty.
$friendid = (!isset($_GET[''friendid''])) ? $_GET[''friendid''] : ''empty'';
where not having the ! tells me yes it has something in it, leave it be.
$friendid = (!isset($_GET[''friendid''])) ? $_GET[''friendid''] : ''empty'';
Fue mucho menos confuso con si A $ = "" entonces ... trabájalo. (o si $ A = "" para los de PHP).
Considero que este uso de cadenas y variables todas como cadenas a veces es muy desalentador. Incluso a través de la confusión, realmente puedo entender por qué ... solo hace que las cosas sean un poco difíciles de entender para mí.
De su respuesta a Philippe, creo que necesita echar un vistazo a las diferencias entre empty y isset .
Para resumir, isset () devolverá TRUE booleano si la variable existe. Por lo tanto, si tuvieras que hacer
$fid = $_GET[''friendid''] = "";
$exists = isset($fid);
$ existe será VERDADERO ya que $ _GET [''friendid''] existe. Si esto no es lo que quieres, te sugiero que busques en vacío. Vacío devolverá VERDADERO en la cadena vacía (""), que parece ser lo que está esperando. Si utiliza el vacío, POR FAVOR, consulte la documentación a la que he vinculado, hay otros casos en los que el vacío se volverá verdadero cuando no lo espere, estos casos se documentan explícitamente en el enlace anterior.
HTH.
Estoy usando un operador de operador coalescente nulo en una condición como esta
if($myArr[''user''] ?? false){
Que es equivalente a
if(isset($myArr[''user'']) && $myArr[''user'']){
La mejor solución para esta pregunta, es decir, si también necesita "verificar la cadena vacía", está empty() .
$friendid = empty($_GET[''friendid'']) ? ''empty'' : $_GET[''friendid''];
empty() no solo comprueba si la variable está configurada, sino que, además, devuelve false si se alimenta con algo que podría considerarse ''vacío'', como una cadena vacía, una matriz vacía, el entero 0, boolean false, ...
Retire el !
. No quieres negar la expresión.
$friendid = isset($_GET[''friendid'']) ? $_GET[''friendid''] : ''empty'';
Si es perezoso y arriesgado, puede usar el operador de control de errores @ y la forma corta de operador ternario .
$friendid = @$_GET[''friendid'']?: ''empty'';
Si la ID de amigo NO está configurada, la ID de amigo = amiga de lo contrario, la ID de amigo = vacía