目前,我使用PDO从MySQL数据库提取数据。在页面中的一个点,我再次有使用PHP对现有数组进行排序
<?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
元素按正确顺序排列(因为它们正在按照Order
列中的值在MySQL查询中进行排序)
我想要做的是对第二个块进行排序,然后按同样的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>";
}
?>
编辑:道歉,我完全糊涂了我自己这里 - 订单IS NOT变化,它的处理的正确方法。我的困惑来自于这样一个事实,即我在第二个块中将li
元素与float: right
一起浮动,这使得链接反向显示。
我实际上想要做的是按照Order
降序排列第二个块,以便第二个块读取1,2,3,4,5而不是现在的5,4,3,2,1。
你的意思是你的数组在第一次foreach循环后发生了变化......是这样吗? – Ali
当然,你想在你的'foreach'循环中对___进行排序 –
我认为你可以使用第二块的php sort()函数。 – naf4me