2

次のステートメントが行うことを実行する関数を作成しようとしています。

<?php
if(isset($var)){
    echo $var;
}
else {
    echo "";
}
?>

私はこれまでこれを行ってきました...

<?php
function echo_ifset($dyn_var){
    $var = $dyn_var;
    if(isset($$var)){
        global $$var;
        echo $$var;
    }
}

しかし、実行しても何も表示されません。

echo_ifset('message');
// while message is a defined variable.
4

4 に答える 4

4

参照を使用する場合、変数が定義されていなければ、警告(またはエラー、私のPHPは少し錆びています!)に問題はありません。

function echo_ifset(&$var) { 
    if (isset($var)) { 
        echo $var; 
    };
}

宣言の&前に注意してください。これは参照演算子です。$var

次に、次を使用して呼び出すことができます。

echo_ifset($message);

このメソッドは、デフォルト値を設定するメソッドを定義する場合にも役立ちます。

<?php 
function defaultValue(&$var, $default) { 
    if (!isset($var)) { 
        return $default; 
    }

    return $var;
} 
?>

いくつかの追加の読み物は次の場所にあります:http ://www.php.net/manual/en/language.references.pass.php

于 2012-08-30T11:30:10.333 に答える
0

関数の戻り値をエコーする必要があります。

function ifset($dyn_var) {
  if (isset($dyn_var)) {
    return $dyn_var;
  }
  else {
    return "";
  }
}

そして、次を使用します。

echo ifset($var);
于 2012-08-30T11:29:59.933 に答える
0

メッセージを文字列として渡すため、表示されません。

あなたはのように通過しecho_ifset($message)ました。メッセージ変数がすでに定義されている場合。

于 2012-08-30T11:31:46.573 に答える
0

ifステートメントで1つの$を削除します。

function echo_ifset($dyn_var){
$var = $dyn_var;
if(isset($var)){
    global $$var;
    echo $$var;
};
}
于 2012-08-30T11:35:28.570 に答える