有没有办法先用最新的内容(降序ID)显示foreach? 我试过找,但我无法做任何工作。
<?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>
提前致谢!
更多text.more text.more text.more text.more text.more text.more text.more text.more text.more text.more text.more text.more text.more text.more text.more text更多文字。
答案 0 :(得分:2)
如果您无法更改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中执行此操作效率要低得多。
答案 1 :(得分:1)
Foreach不会对您的数组进行排序,您需要在查询中处理从数据库中获取数据的数据,或者在获取数据之后以及在foreach之前从其他方法获取数据。
答案 2 :(得分:1)
您应该在ORDER BY id DESC
MySQL声明中使用SELECT
。
答案 3 :(得分:1)
您可以通过在sql查询中的ORDER BY id DESC子句之后放置mysql列名来获得所需的顺序,即ASCENDING。
答案 4 :(得分:1)
您将$deal
命名为对象,然后将其指定为分配给数组。 IMO,您需要将$deal
更改为其他
答案 5 :(得分:1)
您可以将array_reverse
用于数组,但对于数据库源项,您应该遵循其他答案之一。这只有在数组以升序排序