$ _GET ['friendid'] = 55それはNULLを返しますが、以下はこれが私が期待する方法では機能しないようです
<?PHP
$_GET['friendid'] = 55;
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
echo $friendid;
exit;
?>
!
を削除します。あなたはその表現を否定したくないのです。
$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';
PHP 7のリリース 以降、これにはnull結合演算子(二重「?」)を使用できます。
$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";
PHP 5.3+では、チェックするすべてが " truthy "値である場合、 "Elvis演算子"を使用できます(これはissetをチェックしないことに注意してください) )。
$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";
現在、三項演算子を使用しています。
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
if-else
ステートメントに分解すると、次のようになります。
if(!isset($_GET['friendid']))
$friendid = $_GET['friendid'];
else
$friendid = 'empty';
if
ステートメントで実際に何が起こっているかを見てください:
!isset($_GET['friendid'])
isset
関数の前の感嘆符(!)に注意してください。これは、「反対」の別の言い方です。ここでは、$_GET['friendid']
に値が設定されていないことを確認しています。その場合、$friendid
はその値をとるべきです。
しかし、実際には、$_GET['friendid']
が存在しないため、壊れてしまいます。そして、そこにないものの価値を受け入れることはできません。
最初から$_GET['friendid']
の値を設定したので、最初のif
条件はfalseになり、else
オプションに渡されます。
この場合、$friendid
変数の値をempty
に設定します。
感嘆符を削除すると、以前に設定されている場合、$friendid
の値が$_GET['friendid']
の値になります。
Philippeへの返信から、 empty と isset の違いを確認する必要があると思います。
要約すると、変数が存在する場合、isset()
はブール値TRUEを返します。したがって、もしあなたがやるなら
$fid = $_GET['friendid'] = "";
$exists = isset($fid);
$exists
が存在するため、$_GET['friendid']
はTRUEになります。これが必要なものでない場合は、空を調べることをお勧めします。空は、空の文字列( "")に対してTRUEを返します。これは、期待どおりのようです。空を使用する場合、お願いリンク先のドキュメントを参照してください。空が予期しない場所でtrueを返す場合もあります。ケースは上記のリンクで明示的に文書化されています。
friendidが[〜#〜]でない場合[〜#〜]設定されている場合、friendid = friendid、それ以外の場合はfriendid =空
このようなif条件で Null合体演算子 演算子を使用しています
if($myArr['user'] ?? false){
これは
if(isset($myArr['user']) && $myArr['user']){
さて、私はに精通していない同様の問題を抱えている可能性があります! jasondavisが持っていたような状況。
ちょっと混乱しますが、のように... isset($ avar)を!isset($ avar)と比較すると、かなりの違いが生まれます。
ので!その場で、はいのように述べています
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';
もしA $ = ""なら、混乱することはありませんでした。 (またはPHP)の$ A = ""の場合)。
文字列としての文字列と変数の使用は、時として非常に困難であることがわかりました。混乱したとしても、実際にはなぜなのか理解できます...理解しづらくなるだけです。