PDA

View Full Version : پیدا کردن اعداد متوالی



mortaza_ngz
چهارشنبه 29 دی 1395, 09:29 صبح
سلام دوستان من توی دیتابیس یک سری اعداد ذخیره کردم الان میخوام این اعداد رو اونایی که پشت سر هم هستن رو پیدا کنم مثلا
اعداد 1و2و3و4و10و11و21و22و24 حالا میخوام مثلا بازه زمانی تقسیم کنم اینا بشه این طوری
1-4
10-11
21-22
24
یه تابع میخوام این طوری بنویسم که جدا کنه؟

smksmk
پنج شنبه 30 دی 1395, 13:41 عصر
سلام ،
عناصر را در آرایه قرار بدین و با تابع sort مرتب کنید ، برای اطلاعات بیشتر اینجا را ببینید :
http://www.w3schools.com/php/php_arrays_sort.asp

اگر میخواهید خودتون تابع بنویسید ، الگوریتم های مرتب سازی را میتونید سرچ کنید.

mortaza_ngz
شنبه 02 بهمن 1395, 09:10 صبح
سلام ،
عناصر را در آرایه قرار بدین و با تابع sort مرتب کنید ، برای اطلاعات بیشتر اینجا را ببینید :
http://www.w3schools.com/php/php_arrays_sort.asp

اگر میخواهید خودتون تابع بنویسید ، الگوریتم های مرتب سازی را میتونید سرچ کنید.

نمیخوام مرتب سازی کنم میخوام اعداد متوالی رو جداسازی کنم همین انواع مرتب سازی رو میدونم

vahid-p
شنبه 02 بهمن 1395, 14:13 عصر
خب یه متغیر برابر آخرین عدد متوالی یافت شده بذار، یه متغیر هم روی آرایه پیمایش کنه. هر وقت برابر یا بیشترش رو پیدا کرد، اون به لیست اعداد متوالیت اضافه کن و متغیرها رو آپدیت کن.
شاید منظورت چیز دیگه ای باشه که متوجه نشدم.

برای دسته بندی معیار دسته بندیت چیه؟

mortaza_ngz
یک شنبه 03 بهمن 1395, 15:13 عصر
خب یه متغیر برابر آخرین عدد متوالی یافت شده بذار، یه متغیر هم روی آرایه پیمایش کنه. هر وقت برابر یا بیشترش رو پیدا کرد، اون به لیست اعداد متوالیت اضافه کن و متغیرها رو آپدیت کن.
شاید منظورت چیز دیگه ای باشه که متوجه نشدم.

برای دسته بندی معیار دسته بندیت چیه؟
خب میتونید بصورت عملی انجام بدید میخوام اون اعداد رو جدا کنم من یک دیتابیس رزرو دارم باید زمان رو بنویسم مثلا امروز از ساعت 1-5 هست من هر ساعت رو جدا ذخیره کردم برای همین خروجی که میگیرم فقط اعداد هست حالا میخوام به اون صورت در بیارم و جدا بنویسم

samdoft
یک شنبه 03 بهمن 1395, 19:42 عصر
دوست عزیز این تابعی که نوشتم کار شما رو راه میندازه:



$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 (http://phpbin.ir/?tryit=2238)