0

比較演算子で変数やプロパティを使用する前に、常に変数やプロパティを定義するとは限らないというプログラミングの悪い習慣に陥っていることを学んでいます。今まで気が付かなかったのですが、違う環境で開発しているので気付きました。

例えば:

if ($test_var)
    echo "Do some stuff";

これは、必要に応じて、issetまたはempty必要に応じて簡単に解決できます。

ただし、次のように、これらの宣言されていない変数/プロパティを比較で使用する傾向もあります。

if (($test_int == 1) && ($test_str == "hello world"))
    echo "Do some stuff";

issetこれをoremptyステートメントで書き直すのは非常に困難です。全体を の束でラップすることもできissetsますが、そうすると、読みやすさと保守性に影響を与えるネストされたスパゲッティ コードがすぐに得られます。

なぜこれが起こっているのか理解していますが、一般的な方法として最善の解決策を見つけるための助けを求めています.

この解決策が以前に投稿されていた場合はお詫び申し上げます。調べてみましたが、特に比較の書き方ではなく、なぜ通知が表示されるのかについての質問しか見つかりませんでした。

4

2 に答える 2

1

null最善の方法は、手順の前のように何らかの値を割り当てて、比較を行うこれらの変数を初期化することだと思います。

$chicken = null;

// some code that generates $egg value

if ($egg) {
    $chicken = "Leghorn";
}


if ("Leghorn" === $chicken) {
    echo "I say ..I say...boy...";
}

したがって、$chicken = null;上記の例で がなく、 の値$eggが false の場合、通常は PHP 通知を受け取ります。

于 2013-01-02T03:16:20.003 に答える
0

通知を取り除きたいだけの場合は、エラー報告の設定を確認してください: http://php.net/manual/en/function.error-reporting.php

(すべてのページの上部で実行されるスクリプトがある場合は、次のようなことができます: error_reporting(E_ALL & ~E_NOTICE);

それ以外の場合は、変数を一番上で宣言することができます (おそらく、より良いアイデアです)。

無関係: 個人的なことですが、IF ステートメントを中かっこで囲むと、後で解読しやすくなります。

于 2013-01-02T02:56:52.987 に答える