4

警告を表示せずに未定義の変数をエコーする簡単な方法があるかどうか疑問に思っていますか? (エラー報告レベルは変更できますが、変更したくありません。)これまでに持っている最小のものは次のとおりです。

isset($variable)?$variable:''

私はいくつかの理由でこれを嫌います:

  • 少し「冗長」で複雑です
  • $variable繰り返される
  • 空白の文字列の反響は、いつも私を悩ませます。
  • 私の変数名はおそらくもっと長くなるでしょう。$arrayvar['parameter']
4

7 に答える 7

1

これはPHP の長年の問題であり、PHP 6で (または同様の関数で) 修正する予定ですisset_or()。うまくいけば、その機能が PHP 5.3 でも同様になることを願っています。今のところ、質問で isset()/ternary の例を使用するか、@ プレフィックスを使用してエラーを黙らせる必要があります。私見、これは PHP で @ を使用することを正当化する唯一の状況です。

空の文字列を使用して速度の問題を心配する必要はありません。空の文字列を単にエコーするよりもecho、句でラップする方がおそらくコストがかかります。if

于 2008-12-19T00:52:37.567 に答える
0

未定義の変数は非常に一般的です。最初に変数を null で初期化することをお勧めします

$var = null;

または、通知のエラー レポートを無効にします。

error_reporting(E_ALL^E_NOTICE);
于 2012-07-18T08:29:42.300 に答える
-1

@-演算子を使用してエラーを抑制すると、インタープリターは強制的にエラー レベルを変更し、関数を実行してからエラー レベルを元に戻します。これにより、スクリプトの実行時間が短縮されます。

このような関数を構築すると、少なくとも 3 つの理由が解消されます。

function echoVar($var, $ret=NULL) {
    return isset($var)?$var:$ret;
}

echoVar($arrayvar['parameter']);

しかし、なぜ未定義の変数をエコーするのでしょうか? これは本当にうまくコーディングされていないように聞こえます...

于 2008-12-19T00:16:09.247 に答える