警告を表示せずに未定義の変数をエコーする簡単な方法があるかどうか疑問に思っていますか? (エラー報告レベルは変更できますが、変更したくありません。)これまでに持っている最小のものは次のとおりです。
isset($variable)?$variable:''
私はいくつかの理由でこれを嫌います:
- 少し「冗長」で複雑です
$variable
繰り返される- 空白の文字列の反響は、いつも私を悩ませます。
- 私の変数名はおそらくもっと長くなるでしょう。
$arrayvar['parameter']
これはPHP の長年の問題であり、PHP 6で (または同様の関数で) 修正する予定ですisset_or()
。うまくいけば、その機能が PHP 5.3 でも同様になることを願っています。今のところ、質問で isset()/ternary の例を使用するか、@ プレフィックスを使用してエラーを黙らせる必要があります。私見、これは PHP で @ を使用することを正当化する唯一の状況です。
空の文字列を使用して速度の問題を心配する必要はありません。空の文字列を単にエコーするよりもecho
、句でラップする方がおそらくコストがかかります。if
未定義の変数は非常に一般的です。最初に変数を null で初期化することをお勧めします
$var = null;
または、通知のエラー レポートを無効にします。
error_reporting(E_ALL^E_NOTICE);
@-演算子を使用してエラーを抑制すると、インタープリターは強制的にエラー レベルを変更し、関数を実行してからエラー レベルを元に戻します。これにより、スクリプトの実行時間が短縮されます。
このような関数を構築すると、少なくとも 3 つの理由が解消されます。
function echoVar($var, $ret=NULL) {
return isset($var)?$var:$ret;
}
echoVar($arrayvar['parameter']);
しかし、なぜ未定義の変数をエコーするのでしょうか? これは本当にうまくコーディングされていないように聞こえます...