我有一个名为$ 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
使用字符串或数组传递参数的正确方法是什么?我没有收到警告?
为什么我会收到警告,但排序正确?
答案 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数组,并且可以正确排序而不会出现错误或警告。