Php 重新编号mysql问题中的行号

Php 重新编号mysql问题中的行号,php,mysql,Php,Mysql,我如何直接在mysql问题中或在php中获得这样的输出? 请注意,表中缺少Angelas tips_编号3,我想在输出中将其重新编号为1-3。此外,只有具有多个tips_编号的ID的名称后才应有该编号 George Danton Herbert G Wells (1) Herbert G Wells (2) Angela (1) Angela (2) Angela (3) +--------+------------------+--------------+ | id | name

我如何直接在mysql问题中或在php中获得这样的输出? 请注意,表中缺少Angelas tips_编号3,我想在输出中将其重新编号为1-3。此外,只有具有多个tips_编号的ID的名称后才应有该编号

George Danton
Herbert G Wells (1)
Herbert G Wells (2)
Angela (1)
Angela (2)
Angela (3)

+--------+------------------+--------------+
| id     | name             | tips_number  |
+--------+------------------+--------------+
|      1 | Georges Danton   |      1       |
|      2 | Herbert G Wells  |      1       |
|      2 | Herbert G Wells  |      2       |
|      3 | Angela           |      1       |
|      3 | Angela           |      2       |
|      3 | Angela           |      4       |
+--------+------------------+--------------+
最接近的就是这个

foreach($id as $row)
    {
    if($row['tips_number'] > 1){
    $tip_number = $row['tips_number'];
    $name = $row['name']; 
    $result = "{$name} ($tip_number)";
    }
    else $result = $row["name"];       
    echo "$result <br>";
    }

在输出之前,您需要知道有多个条目,以确保它们都得到正确的显示

这使用
array\u count\u values()
来计算每个名称的条目数。然后,它在名称上循环-使用另一个循环输出该名称出现的次数

$tips = array_count_values(array_column($id, "name"));
foreach ( $tips as $name => $tipCount )   {
    for ( $i = 1; $i <= $tipCount; $i++ )    {
        echo $name;
        if ( $tipCount > 1 )    {
            echo "($i)";
        }
        echo "<br>";
    }
}
$tips=array\u count\u值(array\u列($id,“name”));
foreach($name=>$tipCount){
对于($i=1;$i 1){
回音“($i)”;
}
回声“
”; } }

这将把每个人的所有输出捆绑在一起,因此,如果元素分布在输入中,那么您需要一种稍微不同的方法。

在进行输出之前,您需要知道有多个条目,以确保它们都得到正确的显示

这使用
array\u count\u values()
来计算每个名称的条目数。然后,它在名称上循环-使用另一个循环输出该名称出现的次数

$tips = array_count_values(array_column($id, "name"));
foreach ( $tips as $name => $tipCount )   {
    for ( $i = 1; $i <= $tipCount; $i++ )    {
        echo $name;
        if ( $tipCount > 1 )    {
            echo "($i)";
        }
        echo "<br>";
    }
}
$tips=array\u count\u值(array\u列($id,“name”));
foreach($name=>$tipCount){
对于($i=1;$i 1){
回音“($i)”;
}
回声“
”; } }

这将把每个人的所有输出捆绑在一起,因此,如果元素通过输入分散,那么您将需要一种稍微不同的方法。

@Nigel这确实很有效。我在分页中使用输出(我应该首先提到),当Angela在10个ID后到达断点时,她的两个第一个输出(结束一个页面)是Angela(1)和Angela(2),正如所设想的那样,但第三个开始下一个分页页面的输出只是Angela。我还将id列的编号从1-6改为给每个用户一个id号。在数据库中也是如此。在我的第一篇文章中,我做错了。很抱歉。对于分页,您必须执行以下操作-对于第一个人,请执行另一个选择以计算他们总共拥有多少,然后对于此页面上的第一个项目,您将其偏移(项目总数-此页面上的项目数)。解决此问题的智能且简单的解决方案。谢谢你的帮助,帮我找到了正确的方向。@Nigel,效果非常好。我在分页中使用输出(我应该首先提到),当Angela在10个ID后到达断点时,她的两个第一个输出(结束一个页面)是Angela(1)和Angela(2),正如所设想的那样,但第三个开始下一个分页页面的输出只是Angela。我还将id列的编号从1-6改为给每个用户一个id号。在数据库中也是如此。在我的第一篇文章中,我做错了。很抱歉。对于分页,您必须执行以下操作-对于第一个人,请执行另一个选择以计算他们总共拥有多少,然后对于此页面上的第一个项目,您将其偏移(项目总数-此页面上的项目数)。解决此问题的智能且简单的解决方案。谢谢你的帮助,帮我找到了正确的方向。