【问题标题】:Sorting HTML tables without MySQL in Laravel在 Laravel 中对没有 MySQL 的 HTML 表进行排序
【发布时间】:2014-01-06 09:44:53
【问题描述】:

我有一张如下所示的表格:

            _____________________________________________
            NAME | VIEWS | COMMENTS| SUBSCRIBERS | VIDEOS
            ---------------------------------------------
            X    | 10    | 5       | 20          | 5
            ---------------------------------------------
            Y    | 50    | 10      | 10          | 5     
            ---------------------------------------------

我的问题是,我如何将频道 Y 放在表的顶部,因为我将此表排序为具有最多视图的频道,我没有使用 MySQL。这是我的代码:

    @foreach($data["statistics"]["members"] as $key =>$member)
  @foreach($member["channels"] as $channel)  
    <tr>
    <td>{= $channel["snippet"]["title"] =}</td>
    <td>{= $channel["statistics"]["viewCount"] =}</td>
    <td>{= $channel["statistics"]["commentCount"] =}</td>
    <td>{= $channel["statistics"]["subscriberCount"] =}</td>
    <td>{= $channel["statistics"]["videoCount"] =}</td>
    </tr>
      @endforeach
@endforeach

【问题讨论】:

  • 您的源数组是$data["statistics"]["members"],因此对其进行排序,或者将其复制到一个新数组中然后对其进行排序。您可以使用usort()。您也可以删除所有@,将它们放在foreach 构造上是最不寻常的。
  • 谢谢你,你能给我一个关于如何使用 usort() 的例子吗?我认为它需要两个数组,但我使用的 foreach 循环可能有两个以上的数组。
  • @foreach 是刀片标记,是所有刀片模板的标准配置。这不是你想的那种 php 抑制剂
  • 啊,好点 - 实际上,您的源数组是 $member["channels"]。 PHP 网站上有一个示例,但我会这样做:&lt;?php foreach(channelSorter($member["channels"]) as $channel): ?&gt;。然后您可以自己定义channelSorter($inArray) - 并返回一个排序数组。
  • @Chris,谢谢。最令人困惑!

标签: php laravel youtube-api


【解决方案1】:

如果你有 PHP > 5.3(因为你正在运行 Laravel,你应该已经有了它),以下应该可以工作。

 $channels = $member['channels'];

 uasort($channels, function($a, $b) {
     if( $a['statistics']['viewCount'] == $b['statistics']['viewCount'])
        return 0;


     return $a['statistics']['viewCount'] > $b['statistics']['viewCount']) ? -1 : 1;
 });

 foreach( $channels as $channel ) {
    // rest of your code goes here
 }

希望这会有所帮助!

php uasort in OOP

【讨论】:

  • 嗨,很抱歉花了太长时间才回复,对我不起作用,它仍然按照 foreache 迭代它的顺序显示数组。我的结果是string(5) "43269" string(4) "2038" string(6) "622183" string(6) "108517" string(3) "504" string(6) "610514" string(5) "54732" string(8) "19606567" string(1) "0"
  • 上述方法有效。我通过尝试对具有深层嵌套属性的数组进行排序来检查它。我认为为什么它对您不起作用是您尝试对较大的 $data 数组的中间级别数组进行排序。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 2019-03-28
  • 2014-09-19
  • 2011-03-30
  • 2014-06-05
  • 2014-06-28
  • 2017-12-31
  • 2012-07-22
相关资源
最近更新 更多