2017-05-17 30 views
0

我有一個名爲$ arrActivities的多維數組。在php中動態創建參數列表array_multisort

爲了使用php的array_multisort,我創建了四個數組:$ arrField0,$ arrField1,$ arrField2和$ arrField3,它們都是在$ arrActivities中找到的特定字段的所有數組。

使用這些陣列,該命令完美的作品:

array_multisort($arrField0, SORT_STRING, $arrField1, SORT_STRING, $arrField2, SORT_STRING, $arrField3, SORT_STRING, $arrActivities); 

我需要動態地創建參數字符串,不過,因爲有時可能取決於數據集5個陣列。

我試圖動態創建的字符串:

$strSort = '$arrField0, SORT_STRING, $arrField1, SORT_STRING, $arrField2, SORT_STRING, $arrField3, SORT_STRING, $arrActivities'; 

這工作(即它的正確排序),但我得到一個警告:

array_multisort($strSort); 

Warning: array_multisort(): Argument #1 is expected to be an array or a sort flag 

中有什麼要通過正確的方式帶有字符串或數組的參數,我沒有得到警告?

爲什麼我會收到警告,但它排序正確?

+0

如果您提供了一些示例輸入,可以爲您的問題添加上下文,我們可以幫助您提供優雅的解決方案。請給我們一些輸入和輸出數據。 – mickmackusa

+0

我在上面的代碼中添加了代碼。 – sws

+0

我沒有時間看看你的問題更新,但我會盡快回復。請提供一些簡單的示例數組數據,以便我可以直觀地看到您正在使用的內容以及您期望的結果。 – mickmackusa

回答

0

SOLUTION:

我覺得用call_user_func_array建築爲在array_multisort參數的動態列表的解決方案:

$arrSort = array(&$arrField0, SORT_STRING, &$arrField1, SORT_STRING, &$arrField2, SORT_STRING, &$arrField3, SORT_STRING); 
    $arrParams = array_merge($arrSort, array(&$arrActivities)); 
    call_user_func_array('array_multisort', $arrParams); 

我可以動態地產生$ arrSort陣列並正確排序沒有錯誤或警告。