我正在研究一组数值.
我在PHP中有以下数值的数组
11,12,15,16,17,18,22,23,24
Run Code Online (Sandbox Code Playgroud)
而我正试图将其转换为范围,例如在上述情况下它将是:
11-12,15-18,22-24
Run Code Online (Sandbox Code Playgroud)
我不知道如何将其转换为范围.
你必须自己编码;-)
算法很简单:
currentItem = prevItem + 1那时你没有找到新的范围.继续.我之前使用过这个,它可以解决问题.
将逗号分隔的数字字符串作为输入.sort如果保证数字已经被排序,则可以忽略呼叫.
function range_string($csv)
{
// split string using the , character
$number_array = array_map('intval', explode(',', $csv));
sort($number_array);
// Loop through array and build range string
$previous_number = intval(array_shift($number_array));
$range = false;
$range_string = "" . $previous_number;
foreach ($number_array as $number) {
$number = intval($number);
if ($number == $previous_number + 1) {
$range = true;
}
else {
if ($range) {
$range_string .= "-$previous_number";
$range = false;
}
$range_string .= ",$number";
}
$previous_number = $number;
}
if ($range) {
$range_string .= "-$previous_number";
}
return $range_string;
}
$csv_string = "11,16,12,17,18,15,22,23,24";
print range_string($csv_string); // 11-12,15-18,22-24
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |