PDA

View Full Version : سوال: مشکل در sort



mostafa612003
دوشنبه 13 آذر 1391, 13:04 عصر
سلام
من می خواهم یک آرایه را سورت کنم
ولی هر کاری می کنم سورت نمیشه:
$a[0]=4;
$a[1]=3;
$a[2]=2;
$a[3]=1;

for($i=0;$i<4;$i++)
{

for($j=4;$j>$i+1;$j--)
{
if ($a[$j-1] >= $a[$j])
{
$t=$a[$j];
$a[$j]=$a[$j-1];
$a[$j]=$t;
}
}
}

کجای برنامم مشکل داره یا اگه برنامه sort دیگه ایی بلدید به من هم بدید
خیلی خیلی متشکرم

$ M 3 H R D A D $
دوشنبه 13 آذر 1391, 13:11 عصر
خوب از تابع صورت استفاده کن

sort)$ar)

mostafa612003
سه شنبه 14 آذر 1391, 13:48 عصر
یک سوال دیگه برام پیش اومد
من 6 تا ستون دارم که می خوام براساس یکی از این ستونها اطلاعات را سورت کنم
و بعد نمایش بدم
موقع نمایش ستون مورد نظر سورت میشه ولی بقیه ستونها با ستون سورت شده هماهنگی ندارند
چطور می تونم بین این ستونها همبستگی ایجاد کنم

لطفا راهنمایی فرمایید
متشکرم

$ M 3 H R D A D $
سه شنبه 14 آذر 1391, 14:45 عصر
مشکلت و میدونم اما باید دقیق توضیح بدی تا راهنمایین کنم
سورت بر اساس یک ستون خاص یا ستون های خاص انجام میشه
کد بگذار اینجا ( کد کوئری ) و از نتیجش تو phpmyadmin هم عکس بزار تا راهنمایی بشی

mostafa612003
سه شنبه 14 آذر 1391, 15:28 عصر
ممنون که جواب دادی
من دو ستون دارم که اطلاعاتش را از بانک می خونه ولی یک ستون دیگه دارم که اسمش درصد پیشرفته که از بعد از یک محاسبه روی ستون اول و دوم به دست میاد
من باید بر اساس این درصد پیشرفت که مقدارش هم در برنامه به دست میاد (در بانک وجود نداره) سورتم را انجام بدم
اطلاعات سه ستون را در آرایه گذاشتم و تابعی را که گفتید را استفاده کردم تا ستون سوم سورت بشه.سورت انجام میشه
ولی ردیفهای اطلاعاتیم به هم می خوره

$ M 3 H R D A D $
سه شنبه 14 آذر 1391, 15:37 عصر
شما وقتی دو تا ستون دارید در جدول میتونید هنگام کوئری ستون های جدید هم نمایش بدید مثلا من 3 تا ستون دارم عدد اول عدد دوم و آیدی
حالا اینجوری میکنم :

SELECT a,b,(a+b) as 'majmo' FROM `table_name` order by majmo

$ M 3 H R D A D $
سه شنبه 14 آذر 1391, 15:45 عصر
بستگی هم داره به اینکه مقدار های 3 ستونو چکوری تو آرایه گذاشتید تا سورت بشه و از چه تابعی برای سورت استفاده کردید
سورت مقداری داریم
سورت کلید ها
سورت ....
انوعا داره
شما باید مقدارهارو همون تو جدول و هنگام کوئری مرتب کنید
اینجوری ممکن داده هاتون به میلیون برسه :
یک بار میلون داده و از بانک بخونید و یک بار با فور و توابع اونو سوردت کنید !!! داعون میشه میره پی کارش

mostafa612003
سه شنبه 14 آذر 1391, 18:09 عصر
ببینید من یک فیلد از چندین رکورد را جمع می زنم میشه ستون 1
و دوباره یک فیلد از چندین رکورد را جمع می زنم میشه ستون 2
و این محاسبه را انجام میدم:



round(($colm1*100)/$colm2)

هم مقدار ستون 1 و ستون 2 و جوابی که از این دو به دست می آید را هر کدام در یک آرایه گذاشتم
و باید جدولم در نهایت بر اساس محاسبه آخر سورت بشه

$ M 3 H R D A D $
سه شنبه 14 آذر 1391, 18:21 عصر
ببین بد توصیح میدی دوست عزیز
فیلد یک چیز کوچیکه یعنی ستون
شما منظورتون از خط " یک فیلد از جندید رکورد را حمع میزنم میشه ستون 1 "
منظورتون اینه که کلیه رکورد ها یک ستون و جمع میزنید ؟مقلا ستون الف
و ستون ب هم جمع میزنید
خوب اینجوری میشه :


select field1,field2, roudn( ( sum(fild1) *100 ) / sum(field2) ) as 'soton3' from table_name sort by soton3

mostafa612003
سه شنبه 14 آذر 1391, 21:27 عصر
بله منظورم همانی است که گفتید ولی این ستونها یا فیلدها در یک جدول نیستند
هر کدام در یک جدول مجزا هستند

حالا من این را می خوام بدونم میشه سورت آرایه ایی را خودمون بنویسیم و از تابع sort استفاده نکنیم؟

$ M 3 H R D A D $
سه شنبه 14 آذر 1391, 21:40 عصر
میتونید بنویسید مشکلی نیست مقل c++ باید بنویسید اما php خیلی تابغ مختلف داره
اگه تو جند تا حدول هست میتونید جدول هارو با هم join کنید موقع کوئری
نهایتا حرف من اینه که با کوئری mysql این کارو کنید که کار حتی به تابع php نرسه په برسه که شما میگید با توابع آماده نشه و خودم بنویسم