2016-08-16 3 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

하지 . 이 경우에는'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 매개 변수를 사용하여 무언가를 전달합니다.

추 신 : 다른 사람들도 지적했듯이 anon 함수에서 use()를 사용해야하지만 param을 전달하거나 전역으로 이동해야합니다. 두 가지를 모두 수행하지 마십시오.

0

array_filter() 함수는 값을 필터링 콜백 함수를 사용하여 배열의.

이 함수는 입력 배열의 각 값을 콜백 함수에 전달합니다. 콜백 함수가 true를 반환하면 입력의 현재 값이 결과 배열로 반환됩니다. 배열 키는 보존됩니다.

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

희망이 도움이 :)

는`$의 content` 블록은 익명 함수의 범위에
관련 문제