我正在构建一个“结果”页面,该页面计算特定ID在数组中出现的次数。
我执行的代码对数组的指定元素执行array_multisort:
$colpubid = array_column($votedpubs, 'pubid');
$colcount = array_column($votedpubs, 'count');
array_multisort ( $colcount, SORT_DESC, $colpubid, SORT_ASC, $votedpubs );
当我将其显示在页面上时,得到以下信息:
PubIDCount
BES / 262 4
BES / 527 3
BES / 572 2
BES / 158 1
BES / 167 1
BES / 193 1
BES / 238 1
但是,当我然后从MySQL数据库中查找各个元素时,顺序将被覆盖,并且现在将根据从数据库中检索到的顺序对结果进行排序。
这使用以下代码:
while ($row3 = mysqli_fetch_array($pubidresult))
{
foreach($votedpubs as $thispub )
{
if ($row3['PubID'] == $thispub['pubid']) {
echo "<tr><td>" . $thispub['pubid'] . "</td><td>" . $thispub['count'] . "</td><td>" . $row3['Name'] . "</td><td>" . $row3['Town'] . "</td></tr>\n";
}
}
}
有没有办法我仍然可以执行MySQL查找以添加额外的字段(名称和镇),同时保持计数递减的排序顺序?
答案 0 :(得分:0)
我能想到的解决方案意味着首先通过pubID为$votedpubs
数组建立索引
(使用array_column()
),然后在数据库查询的while()
循环中,将详细信息添加到$votedpubs
数组中。
$votedpubs = array_column($votedpubs, null, 'pubid');
while ($row3 = mysqli_fetch_array($pubidresult))
{
$votedpubs[$row3['PubID']]['Name'] = $row3['Name'];
$votedpubs[$row3['PubID']]['Town'] = $row3['Town'];
}
foreach ( $votedpubs as $thispub ) {
echo "<tr><td>" . $thispub['pubid'] . "</td><td>" . $thispub['count'] . "</td><td>" . $thispub['Name'] . "</td><td>" . $thispub['Town'] . "</td></tr>\n";
}