gpt4 book ai didi

php - 对 PHP 进行排序 - 2 列,带有公共(public)副标题

转载 作者:行者123 更新时间:2023-11-29 14:07:59 26 4
gpt4 key购买 nike

我的代码执行两列,如下所示:

邻里1
餐厅1


邻里1
餐厅2


邻里1
餐厅3


我想要:

邻里1
餐厅1
餐厅2
餐厅3

<小时/>
$result = mysql_query("SELECT ID,RName,NHood FROM Restaurants ORDER BY NHood ASC, TRIM(LEADING 'The ' FROM RName) ASC",$connect);
$numRows = mysql_num_rows($result);
$middleIndex = (int)(($numRows+1) / 2);

$names = array();
while($row = mysql_fetch_assoc($result)) {
$names[] = $row['RName'];
$id[] = $row['ID'];
$hood[] = $row['NHood'];
}

// print the left column
echo "<table>";
echo "<tr>";
echo "<td width=60%>";
echo "<div id=\"left\">\n";
for($i = 0; $i < $middleIndex; $i++) {
echo $hood[$i];
echo "<p><a href=\"Restaurant.php?ID=".$id[$i]."\">$names[$i]</a></p>\n";
}
echo "</div>\n";
echo "</td>";

// print the right column
echo "<td>";
echo "<div id=\"right\">\n";
for($i = $middleIndex; $i < $numRows; $i++) {
echo $hood[$i];
echo "<p><a href=\"Restaurant.php?ID=".$id[$i]."\">$names[$i]</a></p>\n";
}
echo "</div>\n";
echo "</tr>";
echo "</table>";

最佳答案

这是您想要的逻辑(伪代码):

SELECT
ID,
RName,
NHood
FROM
Restaurants
ORDER BY
NHood ASC, RName ASC

这应该返回一个结果列表,首先按社区排序,然后按餐厅名称排序。

接下来,您将逐行处理这些结果,以使用您想要的 View 数据结构创建一个嵌套数组:

$neighborhoods = array();

foreach($result as $row)
{
// Add each restaurant to a list named for the current neighborhood
$neighborhoods[$row['NHood']][] = $row['RName'];
}

这将产生如下数据结构:

$neighborhoods = array(
'neighborhood1' => array(
'restaurant1',
'restaurant2',
'restaurant3',
),
'neighborhood2' => array(
'restaurant1',
'restaurant2',
),
)

然后您将通过执行以下操作来使用它:

foreach($neighborhoods as $neighborhood => $restaurants)
{
echo $neighborhood;
foreach($restaurants as $restaurant)
{
echo $restaurant;
}
}

如果您的列表非常大并且您担心内存,那么实现会有点不同,但逻辑是相同的。这种技术速度更快,但阅读和维护起来有点困难,因为表示层和数据层逻辑都混合在一起:

$currentNH = null;

while($row = fetch_row($results))
{
// Detect when the neighborhood changes
if($currentNH != $row['NHood']) {
echo $row['NHood'];
}

echo $row['RName'];
}

关于php - 对 PHP 进行排序 - 2 列,带有公共(public)副标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com