PHP: Orderby "ID"foreach

标签 php mysql database foreach sql-order-by

有没有办法让foreach首先显示最新内容(降序ID)? 我试过找到但我无法使它起作用。

<?php

include_once('includes/connection.php');
include_once('includes/deal.php');

$deal = new Deal;
$deals = $deal->fetch_all();

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GameDeals</title>
<link rel="shortcut icon" type="image/x-icon" href="assets/favicon.png">
<link rel="stylesheet" href="assets/deals.css" />
</head>

<body>

<div class="container">
<!-- START GAMEDEALS -->

<?php foreach ($deals as $deal) { ?>

<div class="deal-info">
    <table width="800" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="100">ID: <?php echo $deal['deal_id']; ?></td>
        <td width="500"><?php echo $deal['deal_title']; ?></td>
        <td width="200">TS: <?php echo $deal['deal_timestamp']; ?></td>
      </tr>
    </table>
</div>

<div class="deal-content">
    <table width="800" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="100"><img src="<?php echo $deal['deal_imageurl']; ?>" width="100" height="100" /></td>
        <td width="400"><?php echo $deal['deal_content']; ?></td>
        <td>
            <table width="300" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td>Regular Price: <?php echo $deal['deal_normalprice']; ?></td>
              </tr>
              <tr>
                <td>Offer Price: <?php echo $deal['deal_offerprice']; ?></td>
              </tr>
              <tr>
                <td>Off: <?php echo $deal['deal_percent']; ?></td>
              </tr>
            </table>
        </td>
      </tr>
    </table>
</div>

<div class="deal-ref">
    <table width="800" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="500">URL: <?php echo $deal['deal_url']; ?></td>
        <td width="300">ENDS: <?php echo $deal['deal_expire']; ?></td>
      </tr>
    </table>
</div>

<?php } ?>
<!-- END GAMEDEALS -->
</div>

</body>
</html>

提前致谢!

更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字.更多文字。

最佳答案

如果您无法更改 SQL 查询本身,那么您需要在执行 foreach 之前对数组进行排序。 PHP 的内置 usort函数非常适合这个——它根据数组的值和用户定义的比较函数对数组进行就地排序:

function compareRows($a, $b)
{
    if ($a['deal_id'] == $b['deal_id']) {
        return 0;
    }
    return ($a['deal_id'] < $b['deal_id']) ? 1 : -1;
}
usort($deals, "compareRows");

$deals 将按“deal_id”字段降序排列。请记住,这是 MySQL 优化的操作类型,而在 PHP 中执行此操作效率要低得多。

关于PHP: Orderby "ID"foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594199/

相关文章:

mysql - 使用表中的 ID,然后使用该表中的 ID 获取数据 SQL

PHP将一维数组转换为多维数组

mysql - 查询中的累计金额

php - 什么是客户端准备好的语句?

mysql备份问题

MySQL View 执行时返回多行错误

xml - Marklogic 中具有相同 URI 的不同文档

database - 如何在git中保留文件权限?

JavaScript 中的 PHP

php - 如何使用mysql限制数据库中的所有列