gpt4 book ai didi

php - 按逗号和合并间隔将排序的数字数组内爆为字符串

转载 作者:行者123 更新时间:2023-12-03 23:02:55 25 4
gpt4 key购买 nike

我想内爆一个数组,但有一点不同。我想用 - 符号合并间隔。如何才能做到这一点? (数组有序!)

例子:

array(1,2,3,6,8,9) => "1-3,6,8-9"
array(2,4,5,6,8,10) => "2,4-6,8,10"

最佳答案

这应该适合你:

首先,对于每次迭代,我们只需将当前迭代次数附加到 $result 字符串中:

$result .= $arr[$i];

在此之后,我们在 while 循环中检查数组 (1) 中是否存在下一个元素,并且它跟在当前迭代 (2) 的数字之后。我们这样做直到条件评估为假:

//(1)Check if next element exists     (2)Check if next element follows up the prev one
┌───────┴───────┐ ┌───────────┴────────────┐
while(isset($arr[$i+1]) && $arr[$i] + 1 == $arr[$i+1] && ++$range)
$i++;

然后我们检查是否有范围(例如 1-3)。如果是,那么我们将破折号和范围的结束编号附加到结果字符串:

if($range)
$result .= "-" . $arr[$i];

最后我们还检查我们是否在数组的末尾并且不再需要附加逗号:

if($i+1 < $l)
$result .= ",";

代码:

<?php

$arr = array(1,2,3,6,8,9);
$result = "";
$range = 0;

for($i = 0, $l = count($arr); $i < $l; $i++){

$result .= $arr[$i];

while(isset($arr[$i+1]) && $arr[$i] + 1 == $arr[$i+1] && ++$range)
$i++;

if($range)
$result .= "-" . $arr[$i];

if($i+1 < $l)
$result .= ",";

$range = 0;

}

echo $result;

?>

输出:

1-3,6,8-9

关于php - 按逗号和合并间隔将排序的数字数组内爆为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com