-1
function myCheck($in)
      { return isset($in); }

$var1='Something';
$var2='$var1';
$var3='$varNonExitant';

私が達成しようとしているmyCheckのは、次のようなコンテンツの存在を評価するために使用することです:

myCheck($var2) return true;
myCheck($var3) return false;
4

2 に答える 2

6

isset()は実際には関数ではありません。これは言語構造です。そのため、存在しない変数を与えるなど、通常の関数では利用できないいくつかの魔法を行うことができます。

要約すると、カスタム関数で複製することはできません。

編集:

以下のコメントでDaveRandomが指摘したように、変数が設定 されているかどうかを確認することで、次のように近づくことができます。

function variable_isset(&$variable = NULL) {
    return isset($variable);
}

ただし、このアプローチには 2 つの欠点があります。

  1. これは、未設定の変数を参照渡しすることで機能し、呼び出されたときに作成されます。NULL であるため、まだ設定されていません。

  2. 変数が存在しない場合、未定義の変数通知がトリガーされ、オプションの変数を適切に処理するという概念全体が台無しになります。

ほとんどの場合、これは必要ありません。issetそのため、より良いガイダンスを提供するためにもっと必要な、そもそもなぜ使用できないのかという疑問が残ります。

于 2013-08-12T09:31:13.500 に答える
-2

set $abc = 123 で myCheck($abc) を呼び出すと、myCheck(123) が取得されます。isset の有効な引数ではありません。

関数に変数名の文字列を指定する必要があります。

function isset_global($variable_name)
{
    return isset($GLOBALS[$variable_name]); 
}

もちろん、なぜこれを行うのかも疑問に思っていますが、グローバル変数をチェックする限り、質問に答えます。

于 2013-08-12T09:31:28.163 に答える