PDA

View Full Version : سوال: بررسی حدود 20 متغیر با هم و رتبه بندی آنها



hesam3
سه شنبه 28 خرداد 1398, 07:51 صبح
سلام به دوستان عزیز .

به عنوان مثال من فایلی دارم که حالا بسته به نوع اون از دیتابیس حدود 8 تا 16 تا متغیر دریافت میکنه ، حالا من احتیاج دارم که این متغیر ها مقایسه بشن بین هم دیگه و تک تک ،،، مثال ساده ترش اینطوریه که :

<?php$a = 190 ;
$b = 180 ;
$c = 170 ;
$d = 160 ;
$e = 150 ;
$f = 140 ;

// خروجی

/*
* اولین : $a
* دومین : $b
* سومین : $c
*
*/
?>
حالا در این مثال ساده من میخوام ، تمام متغیر های a تا f بین هم دیگه مقایسه بشن و نهایتا از اولین و بزرگترین عددش تا آخرین و کوچک ترین عدد اون بررسی بشه .
اگر همین یک موضوع رو به بنده توضیح بدید مشکلم حل میشه :لبخند::چشمک:

باتشکر :چشمک:

ali_sed
سه شنبه 28 خرداد 1398, 08:06 صبح
سلام

لطفا کمی بیشتر توضیح دهید. این مثلا 10 متغییر حاوی تنها عدد هستند و شما قصد دارید آنها را بصورت نزولی مرتب کنید؟ اگر این طور است کافیست مقادیر را در یک آرایه قرار دهید. سپس با دستور sort یا rsort آن را مرتب کنید.



$array = [190, 180, 170, 160, 210];
rsort($array);
print_r($array);

hesam3
سه شنبه 28 خرداد 1398, 08:11 صبح
سلام

لطفا کمی بیشتر توضیح دهید. این مثلا 10 متغییر حاوی تنها عدد هستند و شما قصد دارید آنها را بصورت نزولی مرتب کنید؟ اگر این طور است کافیست مقادیر را در یک آرایه قرار دهید. سپس با دستور sort یا rsort آن را مرتب کنید.



$array = [190, 180, 170, 160, 210];
rsort($array);
print_r($array);


تشکر از شما دوست عزیز .

تمام این 20 متغیر عددی هستند ، اما بنده روش استفاده از آرایه ها به ذهنم رسیده بود اما یک مشکلی وجود داره .

من میخوام این 20 متغیر رو جوری مرتب کنم که بتونم مثلا یک عمل شرطی بنویسم .

مثال میزنم .

مثلا میخوام بگم اگر متغیر $b بزرگتر از همه متغیر های دیگه بود ، بیام یک پیام اکو کنم که مثلا متغیر $b بزرگترین ( اولین هست ) مثلا متغیر $c دومین متغیر هست و متغیر سوم مثلا $a هست .

دقیق تر بخوام بگم ، بعد اینکه فهمیدم کدوم ها بزرگتر هستند میخوام این مقادیر مرتب شده رو از طریق اعمال شرطی داخل دیتابیس بفرستم ...

ali_sed
سه شنبه 28 خرداد 1398, 09:06 صبح
اگر کدهای خود را قرار دهید راحت تر میشه راهنمایی کرد.

شما می توانید نام متغییرها را به عنوان کلید در آرایه درج کنید. و بعد با arsort نزولی مرتب کنید به طوری که کلیدها حفظ شود.



$array = array(
'a'=>190,
'b'=>180,
'c'=>170,
'd'=>160,
'e'=>210);
arsort($array);
print_r($array);



$biggestKey = key($array);

echo $biggestKey;

next($array);
$nextKey = key($array);

echo $nextKey;



output:


Array
(
[e] => 210
[a] => 190
[b] => 180
[c] => 170
[d] => 160
)
biggestKey: e
nextKey: a

hesam3
سه شنبه 28 خرداد 1398, 09:48 صبح
اگر کدهای خود را قرار دهید راحت تر میشه راهنمایی کرد.

شما می توانید نام متغییرها را به عنوان کلید در آرایه درج کنید. و بعد با arsort نزولی مرتب کنید به طوری که کلیدها حفظ شود.



$array = array(
'a'=>190,
'b'=>180,
'c'=>170,
'd'=>160,
'e'=>210);
arsort($array);
print_r($array);



$biggestKey = key($array);

echo $biggestKey;

next($array);
$nextKey = key($array);

echo $nextKey;



output:


Array
(
[e] => 210
[a] => 190
[b] => 180
[c] => 170
[d] => 160
)
biggestKey: e
nextKey: a

ایولا دقیقا همینطور چیزی میخواستم .
و دقیقا هم کلید هارو لازم داشتم .

تنها چیزی که باقی میمونه اینه که میخوام دقیقا مقدار Array رو هم داخل دیتابیس ذخیره کنم اما وقتی میزنم به جای اینکه دیتابیس به صورت :

( [e] => 210 [a] => 190 [b] => 180 [c] => 170 [d] => 160)


نمایش داده بشه به این صورت نمایش داده میشه توی دیتابیس و اشتباه میشه :

Array

من میخوام تمام آرایه داخل دیتابیس ذخیره بشه دقیقا باید از چه کدی استفاده بکنم ؟

ali_sed
سه شنبه 28 خرداد 1398, 10:01 صبح
لطفا کوئری خود را بنویسید تا راهنمایی کنم.

شما نمیتوانید آرایه را مستقیم در دیتابیس ذخیره کنید همان طور که متوجه شدید برنامه تلاش می کند آرایه را به رشته تبدیل کند. همانند وقتی که یک آرایه را با دستور echo نمایش میدهید و تنها عبارت Array نمایش داده می شود.

hesam3
سه شنبه 28 خرداد 1398, 10:09 صبح
لطفا کوئری خود را بنویسید تا راهنمایی کنم.

شما نمیتوانید آرایه را مستقیم در دیتابیس ذخیره کنید همان طور که متوجه شدید برنامه تلاش می کند آرایه را به رشته تبدیل کند. همانند وقتی که یک آرایه را با دستور echo نمایش میدهید و تنها عبارت Array نمایش داده می شود.

منظورتونو فهیدم ...

من میخواستم ی آرایه به این شکل رو ذخیره بکنم :

Array ( [3] => 2001 [12] => 1979 [11] => 1965 [14] => 1958 [7] => 1949 [16] => 1922 [9] => 1891 [5] => 1099 )

تصمیم گرفتم تک تک کلید ها و متغیر هارو بردارم و تیکه تیکه توی دیتابیس ذخیره بکنم . به این صورت مشکل اون آرایه هم حل میشه که مستقیم توی دیتابیس ذخیره نمیشه .

از کمک شما هم خیلی خیلی ممنونم . فقط نمیدونم توی انجمن چطوری میشه تشکر کرد از ی کاربر یا بهش اعتبار داد بخاطر همین اینطوری میتونم ازتون تشکر کنم :چشمک:

ali_sed
سه شنبه 28 خرداد 1398, 10:44 صبح
خواهش می کنم. فکر کنم این انجمن این قابلیت را نداره.

میتوانید با استفاده از دستور serialize آرایه یا آبجکت خود را به رشته تبدیل کنید و در یک دیتابیس ذخیره کنید و با دستور unserialize بازش کنید. (البته تنها در حالتی از این روش استفاده کنید که قصد ندارید روی داده ذخیره شده در دیتابیس جستجو کنید.