如何才能直接在mysql问题中或在php中获得如下输出?标记表中缺少Angelas tips_number 3,我想在输出中将其重新编号为1-3。此外,只有具有多个tips_number的ids才应在其名称后带有数字。
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>";
}获取输出的
George Danton
Herbert G Wells
Herbert G Wells (2)
Angela
Angela (2)
Angela (4)发布于 2020-05-17 14:49:07
在进行输出之前,您需要知道有多个条目,以确保它们都得到正确的显示。
这将使用array_count_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>";
}
}这将把每个人的所有输出捆绑在一起,所以如果元素是通过输入传播的,那么您需要一种略有不同的方法。
https://stackoverflow.com/questions/61847849
复制相似问题