Pregunta

Esto no parece abajo para trabajar la forma en que se puede esperar que, a pesar de evento $ _GET [ 'friendid'] = 55 se devuelva NULL

<?PHP

$_GET['friendid'] = 55;

$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

echo $friendid;
exit;

?>
¿Fue útil?

Solución

Eliminar el !. Usted no quiere negar la expresión.

$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';

Otros consejos

A partir de PHP de 7 liberación , puede utilizar el operador nulo coalescencia (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á mirando en un símbolo " Truthy " valor, se puede utilizar el "operador de Elvis" (nótese que esto no comprueba isset).

$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";

Si usted es perezoso y arriesgado, puede utilizar @ y forma corta de operador ternario.

$friendid = @$_GET['friendid']?: 'empty';

En la actualidad se está trabajando con el operador ternario:

$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

Pierde el control de una declaración if-else y se ve así:

if(!isset($_GET['friendid']))
   $friendid = $_GET['friendid'];
else
   $friendid = 'empty';

Mira lo que está sucediendo realmente en el estado de if:

!isset($_GET['friendid'])

Tenga en cuenta el signo de admiración (!) Delante de la función isset. Es otra forma de decir, "lo contrario de". Lo que estamos haciendo aquí es la comprobación de que no hay ningún valor ya establecido en $_GET['friendid']. Y si es así, $friendid debe tomar en ese valor.

Pero, en realidad, se rompería desde $_GET['friendid'] ni siquiera existe. Y usted no puede tomar el valor de algo que no está allí.

Si lo toma desde el principio, se han establecido un valor para $_GET['friendid'], de manera que la primera condición if ahora es falsa y se lo pasa a la opción else.

En este caso, establecer el valor de la variable $friendid a empty.

Lo que se quiere es eliminar la exclamación y luego el valor de $friendid tomará el valor de $_GET['friendid'] si se ha establecido previamente.

La mejor solución para esta cuestión, es decir, si también es necesario para 'comprobar si la cadena vacía', es vacío () "nofollow".

$friendid = empty($_GET['friendid']) ? 'empty' : $_GET['friendid'];

vacío () no sólo comprueba si se establece la variable, pero, además, devuelve false si se alimenta nada de lo que podría ser considerado 'vacío', tal como una cadena vacía, matriz vacía, el número entero 0, boolean falso, ...

A partir de su respuesta a Philippe Creo que es necesario tener un vistazo a las diferencias entre y href="http://us3.php.net/manual/en/function.isset.php" rel="nofollow noreferrer"> isset .

Para resumir, isset() volverá booleano TRUE si existe la variable. Por lo tanto, si usted fuera a hacer

$fid = $_GET['friendid'] = "";
$exists = isset($fid);

$exists será cierto que existe $_GET['friendid']. Si esto no es lo que quiere le sugiero que busque en vacío. Vacía devolverá true en la cadena ( "") vacío, lo que parece ser lo que se esperaba. Si usted hace uso de vacío, por favor consulte la documentación he vinculado, hay otros casos en los que vacía devolverá true donde no lo esperan, estos casos se documentan de manera explícita en el enlace anterior.

Si es friendid no conjunto, friendid = friendid lo contrario friendid = vacío

Está bien, puede que haya estado teniendo un problema similar no estar familiarizados con el! situación que tenía jasondavis.

Un poco confuso, pero enterarse de no tener el! como en ... isset ($ Avar) en comparación con! isset ($ Avar) puede hacer bastante la diferencia.

Así que con el! en su lugar, es más que indica un SI 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';

era mucho menos confuso con si A $ = "" .... entonces la trabajan. (O si $ a = "" para aquellos de PHP).

Me parece que este uso de cuerdas y todas las variables como cadenas a ser muy desalentadora a veces. Incluso a través de la confusión, puedo entender por qué ... en realidad sólo hace las cosas un poco difícil de entender para mí.

Estoy utilizando Null operador coalescente operador en si la condición como esto

if($myArr['user'] ?? false){

Lo cual es equivalente a

if(isset($myArr['user']) && $myArr['user']){
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top