2016-08-16 33 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:正如其他人指出的那樣,你需要在匿名函數上使用use()...但是也要傳遞參數或者走向全局,不要兩者兼而有之。

0

的array_filter()函數過濾值使用回調函數的數組。

該函數將輸入數組的每個值傳遞給回調函數。如果回調函數返回true,則來自輸入的當前值將返回到結果數組中。數組鍵被保留。

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

希望這有助於:)