2017-08-19 13 views
0

をエコーするnull合体演算子を使用するオペレータを合体ヌルを使用することがpossiblityであり、このような一つの発現におけるエコー:エスケープ出力

if (isset($_POST['email'])) { 
    echo htmlspechars($_POST['email']); 
} 

任意の短縮形として

echo htmlspecialchars($_POST['email']) ?? ''; 

アイデア?

+1

null合体オペレータの理解を助けるために:https://stackoverflow.com/questions/34571330/php-ternary-operator-vs-null-coalescing-operator – Script47

+0

[PHP 3者演算子とnull合体演算子の可能な重複] (https://stackoverflow.com/questions/34571330/php-ternary-operator-vs-null-coalescing-operator) – Script47

答えて

1

パラメータが定義されていない場合null合体演算子はE_NOTICEを放出しないであろう。

だから、htmlspecialchars()の結果に$email = htmlspecialchars($_POST['email'] ?? '');

null合体演算子は、変数$_POST['email'])に適用されていることを注意してないを行うことができます。

条件付き3項演算子(?:)を使用する場合は、変数が操作される前に変数が設定されているかどうかを確認する必要があります。

if (isset($_POST['email'])) { 
    $email = htmlspecialchars($_POST['email'] ?: ''); 
} 

変数に設定されている(又は、言い換えれば、それはを定義し、NULLは異なる値を有している)場合isset()TRUEされることに注意してください。

+0

ISSET()はnullにしてtrueを返すことができません。 http://php.net/manual/en/function.isset.php – rndus2r

+0

@ rndus2rええ、間違って書かれています。修正しました、ありがとうございます。 –

+0

しかし、私はこのエラーが発生します: "未定義のインデックス:電子メール"。なぜどんなアイデア? – michiman

関連する問題