Domanda

Questo qui sotto non funziona come mi aspetterei che, seppure con $_GET['friendid'] = 55 è un ritornare NULL

<?PHP

$_GET['friendid'] = 55;

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

echo $friendid;
exit;

?>
È stato utile?

Soluzione

Rimuovere la !. Non si vuole negare l'espressione.

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

Altri suggerimenti

PHP 7 di rilascio , è possibile utilizzare l'operatore null-coalescenza (doppio "?") Per questo:

$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";

In PHP 5.3+, se tutto si sta verificando su è un " truthy ", è possibile utilizzare il "operatore Elvis" (notare che questo non controlla isset).

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

Se siete pigri e rischioso, è possibile utilizzare controllo degli errori @ e la forma breve di ternario operatore .

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

Attualmente si sta lavorando con l'operatore ternario:

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

Rompere verso il basso per un if-else istruzione e assomiglia a questo:

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

Guardare a ciò che sta succedendo nella if dichiarazione:

!isset($_GET['friendid'])

Nota il punto esclamativo (!) davanti al isset funzione.È un altro modo per dire, "l'opposto".Che cosa stai facendo qui è verificato che non vi è alcun valore impostato in $_GET['friendid'].E se è così, $friendid dovrebbe assumere tale valore.

Ma in realtà, sarebbe pausa dal $_GET['friendid'] non esiste nemmeno.E non si può prendere il valore di qualcosa che non c'è.

Prendendo dall'inizio, è necessario impostare un valore per $_GET['friendid'], in modo che prima if condizione è falsa e la passa all' else l'opzione.

In questo caso, impostare il valore della $friendid variabile empty.

Quello che vuoi è quello di rimuovere l'esclamazione e quindi il valore di $friendid assumerà il valore di $_GET['friendid'] se è stata impostata in precedenza.

La soluzione migliore per questa domanda, cioè se anche avete bisogno di 'verificare la stringa vuota', è vuoto () .

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

vuoto () non solo controlla se la variabile è impostata, ma in aggiunta restituisce falso se si alimenta tutto ciò che può essere considerato 'vuoto', come una stringa vuota, array vuoto, il numero intero 0, boolean false, ...

Dalla tua risposta a Philippe Penso che è necessario avere uno sguardo alle differenze tra vuoto e isset .

In sintesi, isset() tornerà booleano TRUE se esiste la variabile. Quindi, se si dovesse fare

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

$exists sarà vero, come esiste $_GET['friendid']. Se questo non è ciò che si vuole Vi suggerisco di guardare in vuota. Vuoto restituirà TRUE sulla stringa ( "") vuoto, che sembra essere quello che vi aspettate. Se si utilizza vuoto, si prega fare riferimento alla documentazione ho collegato a, ci sono altri casi in cui vuota restituirà vero in cui non si può aspettare che, questi casi sono esplicitamente documentate al link qui sopra.

se friendID è non insieme, friendID = friendID altrimenti friendID = vuoto

Va bene, io sto avendo un problema simile non avere familiarità con la! situazione jasondavis aveva.

tipo di confusione, ma scoprire non avendo la! come in ... isset ($ Avar) rispetto a! isset ($ Avar) può fare molto la differenza.

Quindi, con l'! al suo posto, è più affermando un sì come in

    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';

È stato di gran lunga meno confusione con se A $ = "" allora .... lavorarlo. (O se $ a = "" per quelli di PHP).

Trovo che questo sia l'uso di stringhe e variabili tutti come stringhe di essere molto scoraggiante, a volte. Anche attraverso la confusione, posso effettivamente capire perché ... solo rende le cose un po 'difficile da afferrare per me.

Sto usando Null coalescenza operatore operatore se la condizione come questa

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

Che è equivalente a

if(isset($myArr['user']) && $myArr['user']){
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top