2016-08-16 8 views
0

適切な結果を得るために、このコードを使用する際に問題があります。関数に関数を関数に使用している未定義の変数

マイコード:

function check_txt($url, $content) { 
    global $content; 
    $result = get_file_contents($url); 

    $arr = array_filter($result, function($ar) { 
     return ($ar['txt'] == $content); 
    }); 

    return $arr[0]; 
} 

私はコードを実行するとき、私はこのエラーを得た:

Notice: Undefined variable: content in myfile.php 

を私の質問は、function($ar)にコンテンツ変数を渡す方法ですか?すでに試したfunction($ar, $content)とあまりにもglobal $content;私が掲載したコードのような。

+1

http://php.net/manual/en/functions.anonymous.php#example-203 –

+0

'$のcontent'は、匿名関数のスコープ内にないのに役立ちます。この場合、 'use'を使うことができます。 –

+0

@PaulCrovellaありがとう、これは私の問題を解決しました。 –

答えて

1

あなたはそれが実際に利用可能であると仮定し$content変数を使用する必要があり、あなたのAnnonymousの機能でそれを利用できるようにする

function check_txt($url, $content) { 

    $result = get_file_contents($url); 

    $arr = array_filter($result, function($ar) use ($content) { 
     return ($ar['txt'] == $content); 
    }); 

    return $arr[0]; 
} 

Manual has more details and examples

0

いずれか A)以前にグローバルスコープで$コンテンツが定義されている場合、所有しているグローバルを使用して$ contentパラメータを削除します。 または B)グローバル宣言を削除し、$ contentパラメータを使用して何かを渡します。

PS:他の人が指摘しているように、anon関数ではuse()を使う必要がありますが、paramを渡すかグローバルにするか両方をしないでください。

0

array_filter()関数は値をフィルタリングコールバック関数を使用した配列の配列

この関数は、入力配列の各値をコールバック関数に渡します。コールバック関数がtrueを返すと、入力からの現在の値が結果配列に返されます。配列キーは保持されます。

http://www.w3schools.com/php/func_array_filter.asp

希望これは:)

関連する問題