当极限和增量是动态的时,如何获得for循环的最后一次迭代


How to get last iteration of for loop when limit and increment is dynamic?

我看到了一些与相关的问题

在php中使用for循环时,如何检查最后一个循环?

java 中增强for循环的最后一次迭代

但我没有得到确切的解决方案,因为在我的情况下,增量结束极限都是动态

要求:-我不希望在打印的最后一个元素后面有逗号。

$inc=11;
$end=100;
for($i=1;$i<=$end;$i=$i+$inc){
    echo $i==$end?$i:"$i,";  // 1,12,23,34,45,56,67,78,89,100
} 

在上面的代码中,我知道最后一个元素($I)将是100($end)

所以我可以将条件写为$I==$end,但在下面的情况下它不起作用。

$inc=12;  // Now $inc is 12
$end=100;
for($i=1;$i<=$end;$i=$i+$inc){
    echo $i==$end?$i:"$i,";  // 1,13,25,37,49,61,73,85,97,
}

现在最后一个元素97有逗号,我需要删除它。

提前谢谢。

保持简单:

$numbers = range(0, $end, $inc);
$string = implode(",", $numbers);
echo $string;

你可以在这里看到:https://3v4l.org/BRpnH

;)

您只需使用,

echo $i+$inc>$end?$i:"$i,";

它检查这是否是最后一次可能的迭代。

使用rtrim删除最后一个逗号

$inc   = 12;  // Now $inc is 12
$end   = 100;
$print = '';
for($i=1;$i<=$end;$i=$i+$inc){
    $print .= ($i==$end)? $i : "$i,";  // 1,13,25,37,49,61,73,85,97,
} 
$print = rtrim($print, ',');
echo $print;

你可以这样做:

<?php
$inc=4;
$end=10;
for($i=1;$i<=$end;$i=$i+$inc){
    echo ($i+$inc-1)>=$end?$i:"$i,";  // 1,5,9
} 
?>

这段代码在素数的情况下也没有像// 1,13,25,37,49,61,73,85,97,那样给你结果,总是像// 1,13,25,37,49,61,73,85,97那样给你的结果,在任何素数后面都没有添加逗号。