在PHP数组倒车档一样的功能 [英] Reverse range-like functionality in php arrays
本文介绍了在PHP数组倒车档一样的功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
结果
我有一个这样的数组:
阵列(0,2,4,5,6,7,90,91,92,93,94,95,96,97,98,99);
和我想要得到它为以下字符串:
0,2,4-7,90 +
任何例子在那里之前,我开始从我头上拔头发?结果
谢谢你。
更新:结果
这里是我服用@安迪的code,并修改了一点之后使用的最终解决方案。
函数rangeArrayToString($ rangeArray,$最大= 99){
排序($ rangeArray);
$第一= $持续= NULL;
$输出=阵列(); 的foreach($ rangeArray为$项目){
如果(第一$ === NULL){
$第一= $持续= $项目;
}否则如果($最后< $项目 - 1){
$输出[] = $第== $持续多久? $第一:$第一。 - 。 $最后;
$第一= $持续= $项目;
}其他{
$去年= $项目;
}
} $ finalAddition = $第一; 如果($第一!= $去年){
如果($最后== $最大值){
$ finalAddition ='+'。
}其他{
$ finalAddition =' - '。 $最后;
}
} $输出[] = $ finalAddition; $输出=破灭('',$输出);
返回$输出;
}
解决方案
$第一= $去年= NULL;
$输出=阵列();的foreach($数组作为$项目){
如果(第一$ === NULL){
$第一= $持续= $项目;
}否则如果($最后< $项目 - 1){
$输出[] = $第== $持续多久? $第一:$第一。 - 。 $最后;
$第一= $持续= $项目;
}其他{
$去年= $项目;
}
}$输出[] = $第== $持续多久? $第一:$第一。 +;
$输出=加入('',$输出);
I have an array like this:
array(0, 2, 4, 5, 6, 7, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
and I want to get it as a the following string:
0, 2, 4-7, 90+
Any examples out there before I start to pull hairs from my head ?
Thanks.
UPDATE:
Here is the final solution I used after taking @Andy's code, and modifying it a bit.
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;
}
解决方案
$first = $last = null;
$output = array();
foreach ($array 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;
}
}
$output[] = $first == $last ? $first : $first . '+';
$output = join(', ', $output);
这篇关于在PHP数组倒车档一样的功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文