【问题标题】:Creating parameter list dynamically in php array_multisort [duplicate]在php array_multisort中动态创建参数列表[重复]
【发布时间】:2017-05-17 22:41:49
【问题描述】:

我有一个名为 $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

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

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

【问题讨论】:

  • 如果您提供一些示例输入来为您的问题添加上下文,我们也许可以帮助您提供一个优雅的解决方案。请向我们展示一些输入和输出数据。
  • 我在上面的条目中添加了代码。
  • 我没有时间好好看看你的问题更新,但我会尽快回来。请提供一些简单的示例数组数据,以便我可以直观地了解您正在使用的内容以及您所期望的结果。
  • ...我的意思是,向我展示带有示例值和排序意图的实际数组构建。我确信有更好的方法来组织您的数据。
  • 我发布了解决方案。感谢您的帮助。

标签: php array-multisort


【解决方案1】:

解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2014-06-21
    • 2017-08-06
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多