在php array_multisort中动态创建参数列表

时间:2017-05-17 22:41:49

标签: php array-multisort

我有一个名为$ arrActivities的多维数组。

为了使用php的array_multisort,我创建了四个数组:$ arrField0,$ arrField1,$ arrField2和$ arrField3,它们都是在$ arrActivities中找到的特定字段的数组。

使用这些数组,此命令可以完美运行:

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

我需要动态创建该参数字符串,因为有时可能有五个数组,具体取决于数据集。

我尝试动态创建一个字符串:

$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

使用字符串或数组传递参数的正确方法是什么?我没有收到警告?

为什么我会收到警告,但排序正确?

1 个答案:

答案 0 :(得分:0)

解决方案:

我找到了使用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数组,并且可以正确排序而不会出现错误或警告。