目前,我正在使用PDO从MySQL数据库中提取数据。在页面的某一点我有
<?php
$sitelinks=$pdo->query("SELECT * FROM sitelinks WHERE `show` = 'yes' ORDER BY `Order` ASC")
->fetchAll();
foreach ($sitelinks as $sitelink) {
echo "\n<li class=\"linkitem\"><a href=\"{$sitelink['URL']}\">{$links['Text']}</a></li>";
}
?>
然后在页面中我再次使用$sitelink
值:
<?php
foreach ($sitelinks as $sitelink) {
echo '\n<li class=\"desktoplinkitem\">
<a href=\"{$sitelink['URL']}\">{$sitelink['Text']}</a>
</li>";
}
?>
在第一个块中,我按正确的顺序获取$sitelink
元素(因为它们在MySQL查询中按Order
列中的值排序)
然后我要做的就是对第二个块进行排序,同样通过同一个Order
列进行排序。从查看PHP手册我猜测array_multisort
可能是最好的,但我对正确的语法有点困惑。我尝试了以下方法:
<?php
foreach ($sitelinks as $sitelink) {
array_multisort($sitelink[`Order`], SORT_ASC);
echo "\n<li class=\"desktoplinkitem\">
<a href=\"{$sitelink['URL']}\">{$sitelink['Text']}</a></li>";
}
?>
编辑:道歉,我在这里完全迷茫了 - 订单不是正在改变,它正在处理正确的方式。我的困惑来自这样一个事实:我然后在第二个块中将li
元素与float: right
一起浮动,这使链接显示为反向。
我真正想要做的是按Order
降序排序第二个块,以便第二个块读取1,2,3,4,5而不是5,4,3,2,1,就像它一样现在
答案 0 :(得分:2)
使用array_reverse
$reversed = array_reverse($sitelinks);
foreach ($reversed as $sitelink) {
echo "\n<li class=\"desktoplinkitem\"><a href=\"{$sitelink['URL']}\">{$sitelink['Text']}</a></li>";
}
答案 1 :(得分:0)
在您的特定情况下,我建议使用 array_reverse
它基本上会以相反的顺序返回相同的数组。这种方式更简单明了,您可以使用相同的订单标准,只需更改asc for asc。
QComboBox* c = new QComboBox();
QAbstractItemView* v = new MyComboView();
c->setView(v);
希望这会有所帮助。 如果您仍然喜欢采用多种方式。它更复杂,如果订单标准与原始标准不同,我只推荐使用。这是你应该做的(有点): 1.获取一系列排序标准: foreach($ sitelinks $ key =&gt; $ sitelink){ $ orderSorting [$ key] = $ sitelink ['Order']; }
对原始数组应用多重排序:
array_multisort($ orderSorting,SORT_DESC,$ sitelinks);