PHP foreach排序降序

时间:2014-09-24 22:35:06

标签: php sorting foreach

这里有新手......我正在摸不着头脑,无法弄清楚如何按照DESC顺序按ID排序这些讨论评论。

此站点上的其他帖子表示2部分解决方案 - 创建两个参数。 (1)排序和(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 个答案:

答案 0 :(得分: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");
?>

答案 1 :(得分: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值。