-1

common.php ファイルに次のものがあります。

$debug = true;

function debug_to_screen(&$array) 
    { 
        foreach($array as &$value) 
        { 
            if(is_array($value)) 
            { 
                print("Debug Mode: " + $value); 
            } 
        } 
    } 

次に、メイン ファイルで、この関数を次のように呼び出します。

require("common.php");     

if(!isset($_COOKIE["qcore"])) 
{
    debug_to_screen("Cookie not found: ", var_dump($_COOKIE['qcore']));
}

ただし、次のエラーが表示されます。

致命的なエラー: 8 行目の C:\DWASFiles\Sites\junglegym\VirtualDirectory0\site\wwwroot\wp-content\plugins\QCORE\login.php で参照によってパラメーター 1 を渡すことはできません

これは、複数の値を渡すことができる関数を作成しようとした初めての 1 つであるため、これが機能しない理由を理解するためのスキル セットがありません。基本的に、共通ファイルで定義されている、複数の値を渡すことができるデバッグ関数を作成したいと思います。

4

3 に答える 3

3

あなたの問題はここにあります:

debug_to_screen("Cookie not found: "...

データが参照によって渡されることを期待している関数に渡しています-つまり、そのコピーではなく ACTUAL 変数を送信しています。

最初に配列を作成してから、関数への参照によって i を渡す必要があります。

このようなもの:

$array=$_COOKIE;
debug_to_screen($array);

関数では、次のように定義しました。

function debug_to_screen(&$array)

エクストラ&は、関数がそのコピーではなく ACTUAL 変数を取得していることを意味します。

これも機能しません:

function julie(&$bob)
{
// something..
}


julie(5);

これは、関数が 5 を変更することはできますが、参照パスを介して返すことができないためです。

$var1=5;
julie($var1);

$var1 を変更することができ、関数を呼び出す外部コードが変更された変数を使用できるため、これは完全にうまく機能します。

于 2013-09-17T03:45:27.263 に答える
2

あなたは 1 つの引数のみを受け入れる機能を果たしfunction debug_to_screen(&$array)ますが、最初の引数としてテキストを送信し、2 番目の引数として Cookie を送信しています。

そう

交換

debug_to_screen("Cookie not found: ", var_dump($_COOKIE['qcore']));

debug_to_screen($_COOKIE['qcore']);
于 2013-09-17T03:43:21.973 に答える
2

参照渡しする必要はありません。引数が 1 つしか定義されていない場合は、2 つの引数を渡すことになります。また、配列にしようとしてprintいますが、var_dump は返されません。

使用している関数については、PHP ドキュメントを参照する必要があると思います。ここには多くの問題があります。

于 2013-09-17T03:45:55.853 に答える