هومن
3 سال پیش توسط هومن مطرح شد
2 پاسخ

جلوگیری از ایجاد key توسط تابع asort

سلام، من کد زیررو نوشتم :

$Array = [];
for ($a = 0; $a <= 3; $a++) {
$Array [] = ['a' => rand(0, 100), 'BaseHolders' => rand(0, 100)];
}
//Result 1
print_r($Array);
echo "\n\n-------\nResult 1 :\n";
asort($Array);
//Result 2
echo "\n\n-------\nResult 2 :\n";
print_r($Array);

و وقتی اجراش می کنم این میشه خروجیم :

Array
(
[0] => Array
(
[a] => 30
[BaseHolders] => 85
)
[1] => Array
(
[a] => 90
[BaseHolders] => 75
)
[2] => Array
(
[a] => 28
[BaseHolders] => 44
)
[3] => Array
(
[a] => 30
[BaseHolders] => 0
)
)
-------
Result 1 :
-------
Result 2 :
Array
(
[2] => Array
(
[a] => 28
[BaseHolders] => 44
)
[3] => Array
(
[a] => 30
[BaseHolders] => 0
)
[0] => Array
(
[a] => 30
[BaseHolders] => 85
)
[1] => Array
(
[a] => 90
[BaseHolders] => 75
)
)

داخل نتیجه اول آرایه ها key ندارن و به صورت عددی میشه صداشون زد مثلا :
$Array[1]

ولی داخل نتیجه دوم بعد از مرتب سازی آرایه ها key عددی میگیرن!
چطوری کاری کنم که بعد از مرتب سازی key نگیرن ؟


ثبت پرسش جدید
احسان داوری
تخصص : برنامه نویس
@ehsndvr 3 سال پیش مطرح شد
1

سلام

function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$Array = [];
for ($a = 0; $a <= 3; $a++) {
$Array [] = ['a' => rand(0, 100), 'BaseHolders' => rand(0, 100)];
}
//Result 1
print_r($Array);
echo "\n\n-------\nResult 1 :\n";
usort($Array , "cmp");
//Result 2
echo "\n\n-------\nResult 2 :\n";
print_r($Array);

باید به جای فانکشن asort از usort و یک تابع مرتب سازی استفاده بکنید


احسان داوری
تخصص : برنامه نویس
@ehsndvr 3 سال پیش مطرح شد
0

اگر جواب بنده مورد قبولتون بوده
میتونید جواب بنده رو به عنوان بهترین پاسخ انتخاب بکنید
@houman


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام