【问题标题】:Sort a foreach loop based on variable根据变量对foreach循环进行排序
【发布时间】:2014-06-13 07:52:29
【问题描述】:

我有一个前端表格(使用 WordPress 的高级自定义字段插件),供用户跟踪他们每周骑自行车上班的天数。每个人都有自己的行,并输入他们每周的号码。然后我循环遍历为每一行输入的总数,并列出每个人的姓名及其总数。

我怎样才能对它进行排序,以便按最高总和 ($overalltotal) 的顺序列出名称?这是我的代码,它正确列出了名称及其总数,但未排序:

 $rows = get_sub_field('ride_tracker');

 foreach( $rows as $row )
    {

    $overalltotal = intval($row['week_1'] + $row['week_2'] + $row['week_3'] + $row['week_4']);

    echo $row['name'] . ' : ' . $overalltotal . '<br />' ;

    }

我已经阅读了有关 array_multisort 和 usort 的信息,但我不知道如何让它们与在循环期间计算的变量一起工作。

感谢您的帮助!

【问题讨论】:

  • 你在 foreach 之前尝试过:$rows = sort($rows); 吗?
  • 我刚试过。它给了我这个:警告:为 foreach() 提供的参数无效
  • 好的,现在我明白了。 $rows 是一个数组,如果你想按键排序,只需`$rows = get_sub_field('ride_tracker');` 和ksort($rows);
  • 我在您指出的地方尝试了 ksort($rows) ,但没有效果。我需要按变量 $overalltotal 进行排序,该变量是在 foreach 循环内计算的,所以看起来排序代码必须在那之后,不是吗?
  • 你不能在同一个循环中进行计算排序——这应该很明显,如果你想一想:你不能对值进行排序而不是所有这些甚至都已经计算过了。将名称和总数放入一个数组中,对该数组进行排序,然后使用第二个循环输出数据。

标签: php wordpress sorting variables foreach


【解决方案1】:

ACF 是一个很棒的插件。我用它做一切。

我看到您使用的是 sub_fields,所以我假设您使用的是中继器。

ACF 使用这种格式array_multisort( $column_id, SORT_ASC, $repeater );

这个页面可能对你有很大帮助,展示了如何在 ACF 中对字段进行排序。

http://www.advancedcustomfields.com/resources/how-to/how-to-sorting-a-repeater-field/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2014-01-17
    • 1970-01-01
    • 2013-01-08
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多