首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新编号mysql问题中的行号

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

Stack Overflow用户
提问于 2020-05-17 14:28:44
回答 1查看 27关注 0票数 0

如何才能直接在mysql问题中或在php中获得如下输出?标记表中缺少Angelas tips_number 3,我想在输出中将其重新编号为1-3。此外,只有具有多个tips_number的ids才应在其名称后带有数字。

代码语言:javascript
复制
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       |
+--------+------------------+--------------+

我得到的最接近的是这个

代码语言:javascript
复制
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>";
    }

获取输出的

代码语言:javascript
复制
George Danton
Herbert G Wells 
Herbert G Wells (2)
Angela 
Angela (2)
Angela (4)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-17 14:49:07

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

这将使用array_count_values()来计算每个名称拥有的条目数量。然后,它循环遍历这些名称-使用另一个循环输出该名称出现的次数。

代码语言:javascript
复制
$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>";
    }
}

这将把每个人的所有输出捆绑在一起,所以如果元素是通过输入传播的,那么您需要一种略有不同的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61847849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档