دوست عزیز این تابعی که نوشتم کار شما رو راه میندازه:
$array = [1,2,3,5,6,8,9,10,11,100,101,102,200];
print_r(u_sort($array));
function u_sort($arr)
{
$nsort = $arr;
$temparray = [];
if(count($nsort) == 0)
{
return $nsort;
}
$i = 0;
$j = 0;
while(count($nsort)>0)
{
if(count($nsort)==1)
{
array_push($temparray,[$nsort[0]]);
break;
}
if($i == 0 )
{
array_push($temparray,[$nsort[$i]]);
$i++;
continue;
}
if($nsort[$i] == ($temparray[$j][$i-1]+1))
{
array_push($temparray[$j],$nsort[$i]);
$i++;
}
else
{
array_splice($nsort,0,$i);
$j++;
$i=0;
}
}
return $temparray;
}
اما چجوری ازش استفاده میشه
شما ابتدا بیا اعدادت رو تو یه ارایه قرار بده بعد با استفاده از تابع sort اونارو مرتب کن
بعد ارایه مرتب شده رو به تابعی که نوشتم u_sort بفرست تابع خروجیش یه آرایه انجمنی هستش که
هر عنصرش اعداد پشت سر هم رو تو خودش گذاشته
مثلا شما ارایه
$array = [1,2,3,5,6,8,9,10,11,100,101,102,200,300];
رو به تابع میدید و آرایه انجمنی زیر رو تحویل میگیرید:
Array(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 5
[1] => 6
)
[2] => Array
(
[0] => 8
[1] => 9
[2] => 10
[3] => 11
)
[3] => Array
(
[0] => 100
[1] => 101
[2] => 102
)
[4] => Array
(
[0] => 200
)
)
اینم نمونش همراه با اجراش:
http://phpbin.ir/?tryit=2240