2012-09-07 96 views
2

我發現如何過濾多維數組這裏的優秀教程: PHP filter 2 dimensional array by specific key過濾基於用戶輸入一個多維數組

雖然

$filtered = array_filter(
    $array, 
    function($v) { 
     return $v['type'] == 'folder'; 
    } 
); 

不會做的正是我需要的只是顯示方面文件夾條目,我需要能夠根據用戶輸入過濾數組。

因此,從我上面所說的頁面上使用的示例中,將會出現文件夾和頁面的複選框,然後根據用戶選擇的內容(頁面,文件夾或兩者),顯示它們的選擇。

我遇到的問題是我似乎無法使用變量來存儲$ v ['type'] =='文件夾'。

我希望做一些事情,如:

$filtered = array_filter($array, function($v) { return $userSelections; }); 

我還探討了使用eval()(我知道這可能不是最好的主意的可能性,但我已經嘗試了一切我能想到的of)來提供變量的內容,但這似乎也不起作用。

這裏的任何建議都會很棒。

謝謝。

回答

1

這可能是因爲關閉內部的變量範圍。你可以試試下面的:

$filtered = array_filter($array, 
    function($v) use ($userinput) { 
     return in_array($v['type'], $_POST['userSelections']); 
    } 
); 

隨着use你從封閉內聲明的外部變量訪問 - 你必須「全局」這麼說。

編輯:我包括從下面的最終解決方案。

+0

只要將問題解決/答案正確,如果一切正常。我的榮幸。 –

+0

Louis,感謝您的快速回復,但如果用戶同時選擇頁面和文件,我將如何完成這項工作?複選框方法會將它們的選擇存儲在數組中,並且每個方法都必須使用。 – Matt

+0

用in_array檢查它:'return in_array($ v ['type'],$ userinput);' –