2016-11-17 8 views
1

未定義の変数を無視できるコンテキストを選択することが可能かどうかは疑問です。三元の状態で、私は私がすぐに未定義の設定のデフォルト値を設定することができますアイデアを好きなので、のように:三項条件での通知を無視する

$date = $_POST['date'] ?: date(); 

そして、これを使用するために、私はE_NOTICEエラーを無視しなければなりませんでした。

しかし、未定義の変数はすべて無視され、誤って未定義の変数を使用して気付かれないという考えはあまり好きではありません。だから私はこのような状況の中で、ある程度の可能性があるのだろうかと思います。

は、まさにこのような

$date = (isset($_POST['date'])) ? $_POST['date'] : date(); 
// or 
$date = date(); 
if(isset($_POST['date'])) { 
    $date = $_POST['date']; 
} 

しかし、私が尋ねるしようとしているとして、私は非三元ソリューションの認識しています、明確にするために、速記三条件の恩恵を享受するための方法があり、まだ未定義の変数に対する注意を喚起することは避けています。

+0

通知/警告/エラーを考慮し、抑制または無視しないように、コードを構造化する必要があります。私はあなたが探しているものが '$ date = isset($ _ POST ['date'])のようなものだと思いますか? $ _POST ['date']:date(); '? POSTが設定されている場合は、 'date()'を使用しない場合はそれを使用しますか? – Qirel

答えて

0

これは仕事ができる:

$date = ! empty($_POST['date']) ? $_POST['date'] : date(); 
3

ちょうど@で先頭に追加:

$date = @$_POST['date'] ?: date('Y-m-d'); 
     ^

をとにかく、私が代わりにissetを検証することをお勧め:

$date = isset($_POST['date']) ? $_POST['date'] : date('Y-m-d'); 
1

あなたが使用している場合PHP 7以降でthe null coalescing operator, ??を使用することができます。変数。また、明示的ではなく、空の変数よりはnullをチェック - ?:がゼロまたは空の文字列を直感的に動作しません、などとして

// Raises a notice if $_POST['date'] isn't set 
$_POST['date'] ?: date(); 

// Won't raise a notice 
$_POST['date'] ?? date(); 

をさておき、あなたはdate()ではなくtime()を意味するかもしれない、後者が必要となるためフォーマット引数。それともあなたの事例から外しただけかもしれません。

+1

日付()についての心配はありません、それは私がまっすぐStackoverflowで書いた例だったので、私はずっとずっと考えていませんでした::P –

関連する問題