【发布时间】:2011-05-30 00:10:15
【问题描述】:
我有一个这样的数组:
array(0, 2, 4, 5, 6, 7, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
我想将它作为以下字符串:
0, 2, 4-7, 90+
在我开始拔头发之前有什么例子吗?
谢谢。
更新:
这是我在获取@Andy 的代码并稍作修改后使用的最终解决方案。
function rangeArrayToString($rangeArray, $max = 99) {
sort($rangeArray);
$first = $last = null;
$output = array();
foreach ($rangeArray as $item) {
if ($first === null) {
$first = $last = $item;
} else if ($last < $item - 1) {
$output[] = $first == $last ? $first : $first . '-' . $last;
$first = $last = $item;
} else {
$last = $item;
}
}
$finalAddition = $first;
if ($first != $last) {
if ($last == $max) {
$finalAddition .= '+';
} else {
$finalAddition .= '-' . $last;
}
}
$output[] = $finalAddition;
$output = implode(', ', $output);
return $output;
}
【问题讨论】:
-
Erm... 也许您应该尝试使用一些编程 来解决这个问题?我不是想冒犯你,但如果你稍微动动脑筋,这是一项简单的任务。
-
我真的不明白,在为用户提问而设计的网站上,怎么还有人像你刚才那样评论 cmets。如果您认为这很简单,您不必回答这个问题,但是告诉我我可以尝试通过编程来做到这一点,根本没有帮助。我喜欢看代码示例。它不拘泥于范式,丰富了我的编码实践。
-
此站点适用于您遇到代码问题时,而不适用于您不想自己编写代码并希望让其他人为您编写代码的情况。如果您发布了您尝试过但没有成功的东西,那将是完全不同的东西。
-
@Alin,如果您认为我需要其他人来完成我的工作,欢迎您查看我的其他问题。
标签: php arrays numbers range reverse