【问题标题】:PHP: How to increment seq numberPHP:如何增加序列号
【发布时间】:2021-01-16 00:30:55
【问题描述】:

如果 id 与下面的示例相同,我如何增加 seqnr。

ID   SeqNr
111   1
111   1
111   1
222   2
222   2
333   3
555   4
555   4

我有一个重复 id 的数组,所以如果 id 相同,我希望 seqNr 为 1,如果 id 不同,则 seqnr 应该递增。

<?php
$array = [
    ['id' => 111, 'name' => 'one'],
    ['id' => 111, 'name' => 'one'],
    ['id' => 111, 'name' => 'one'],
    ['id' => 222, 'name' => 'two'],
    ['id' => 333, 'name' => 'three'],
    ['id' => 444, 'name' => 'four'],
    ['id' => 444, 'name' => 'four'],
];

foreach ($array as $key => $value) {
    $id = $value['id'];
    $seqNr = 1;

    echo " ID: " . $id . " SeqNr " . $seqNr;
}
?>

非常感谢您的帮助。谢谢!

【问题讨论】:

  • 您能向我们展示一下示例输出的样子吗?
  • @waterloomatt 输出 atm:ID:111 SeqNr 1 ID:111 SeqNr 1 ID:111 SeqNr 1 ID:222 SeqNr 1 ID:333 SeqNr 1 因为 seqnr 不递增。

标签: php arrays increment


【解决方案1】:
<?php
$array = [
    ['id' => 111, 'name' => 'one'],
    ['id' => 111, 'name' => 'one'],
    ['id' => 111, 'name' => 'one'],
    ['id' => 222, 'name' => 'two'],
    ['id' => 333, 'name' => 'three'],
    ['id' => 444, 'name' => 'four'],
    ['id' => 444, 'name' => 'four'],
];
$seqNr = 0;
$lastid= 0;
foreach ($array as $key => $value) {
    $id = $value['id'];
    if($lastid!==$value['id']){
        $seqNr++;
    }
    $lastid=$value['id'];
    echo "<pre>";
    echo " ID: " . $id . " SeqNr " . $seqNr;
    echo "</pre>";

}
?>



 ID: 111 SeqNr 2
 ID: 111 SeqNr 2
 ID: 111 SeqNr 2
 ID: 222 SeqNr 3
 ID: 333 SeqNr 4
 ID: 444 SeqNr 5
 ID: 444 SeqNr 5

【讨论】:

  • 泰!这差不多了。为什么数字是从 2 开始的?
  • 啊非易失!因为seq号以1开头。
  • 因为它递增和写入是因为它在第一个选项中为真 $ seqNr = 0;试试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多