2014-09-24 101 views
0

新手在这里...我抓我的头,不能完全弄清楚如何按照DESC顺序排序这些讨论评论的ID。PHP的foreach排序降序

本网站上的其他帖子指出了2部分解决方案 - 创建两个参数。 (1)Sort和(2)命名比较两个元素的函数。 就在那里......我迷路了...但努力去理解。

我觉得这是需要的调整代码的主要部分:

<?php $discList = wtis_get_discussions($post->ID); 
     foreach($discList as $discInfo){ 
    ?> 

任何建议?

找到了!

//Get log details 

function wtis_get_discussions($show_id){ 

    global $wpdb; 

    $table_name = $wpdb->prefix . WTIS_DISC_TBNAME; 

$sql = "SELECT * FROM $table_name WHERE show_id=$show_id ORDER BY message_date"; 

//echo "<br/>Sql: " . $sql; 

$wpdb->show_errors = true; 

$discussionList = $wpdb->get_results($sql, ARRAY_A); 

return $discussionList; 

} 

现在什么...真的很感谢你的帮助家伙。

+2

现在你必须看看'wtis_get_discussions'的作用,因为它可以让你得到你想要排序的数据。 – Prix 2014-09-24 22:37:23

+0

http://ca1.php.net/manual/en/function.usort.php – Sammitch 2014-09-24 22:39:28

+0

数据从哪里来?如果它来自数据库,那么它应该处理排序。 – 2014-09-24 22:39:29

回答

0

我会添加一个可选的参数传递给函数为$order_by = 'message_date',然后使用在查询功能。这样你可以默认排序,如果有必要,可以做一个不同的ORDER BY和方向。

function wtis_get_discussions($show_id, $order_by = 'message_date'){ 

    global $wpdb; 

    $table_name = $wpdb->prefix . WTIS_DISC_TBNAME; 

    $sql = "SELECT * FROM $table_name WHERE show_id=$show_id ORDER BY $order_by"; 

    //echo "<br/>Sql: " . $sql; 

    $wpdb->show_errors = true; 

    $discussionList = $wpdb->get_results($sql, ARRAY_A); 

    return $discussionList; 
} 

然后:

<?php $discList = wtis_get_discussions($post->ID); 
    foreach($discList as $discInfo){ 
?> 

<?php $discList = wtis_get_discussions($post->ID, 'message_date DESC'); 
    foreach($discList as $discInfo){ 
?> 

<?php $discList = wtis_get_discussions($post->ID, 'show_id DESC'); 
    foreach($discList as $discInfo){ 
?> 

您需要小心逃脱,清洁$order_by值,如果它不是你已经从你的应用程序外接受(例如,本质上是不安全或可能无效内容)。

+0

High Five !! That's worked。你是我的英雄当天。 – ljvincent 2014-09-25 18:59:50

0

如果$discList是意见与ID字段的数组,这可能会为你做它:

<?php 
function mycmp($a, $b) 
{ 
    if ($a['ID'] == $b['ID']) { 
     return 0; 
    } 
    return ($a['ID'] < $b['ID']) ? 1 : -1; 
} 

usort($discList, "mycmp"); 
?>