PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مرتب سازی آرایه های چند بعدی در php



CodeBox
October 16th, 2019, 11:20
https://redup.ir/img.php?image=9375_umffo0ep7tlci0zq8zozzi9pcqgbhyz r_ao20.png (https://redup.ir/)


مرتب سازی آرایه های چند بعدی در PHP



منظور از آرایه های چند بعدی در اینجا آرایه هایی است که هر آیتم آن نشان دهنده یک موجودیت مشخص دارای چندین ویژگی باشد. مثلاً فرض کنید آرایه ای دارید که کاربران سایت شما را مشخص میکند؛ هر آیتم آن که نشان دهنده یک کاربر است شامل نام، ایمیل و سن می باشد.

حال ما میخواهیم این لیست این اعضا را با توجه به سن و با ترتیبی خاص مرتب کنیم.

برای چنین مرتب سازی هایی تابع از پیش تعریف شده ای در زبان PHP وجود ندارد و می بایست با خلاقیت و استفاده از چند حلقه و توابع ساده ای مشابه توابعی که در این مقاله گفته شد، مرتب سازی چنین آرایه هایی را انجام دهیم.

تابع زیر آرایه مورد نظر را با توجه به اندیس ورودی مرتب سازی می کند. ورودی اول مربوط به آرایه , ورودی دوم مربوط به اندیس ای است که باید بر اساس آن مرتب سازی صورت گیرد و بخش سوم صعودی یا نزولی بودن ترتیب نتایج است(SORT_ASC, SORT_DESC). به مثالها توجه کنید:




function array_sort($array, $on, $order = SORT_ASC)
{
$new_array = array();
$sortable_array = array();
if (count($array) > 0)
{
foreach ($array as $k => $v)
{
if (is_array($v))
{
foreach ($v as $k2 => $v2)
{
if ($k2 == $on)
{
$sortable_array[$k] = $v2;
}
}
} else
{
$sortable_array[$k] = $v;
}
}
switch ($order)
{
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v)
{
$new_array[$k] = $array[$k];
}
}
return $new_array;
}




مثال:





$people = array(
12345 => array(
'id' => 12345,
'first_name' => 'Joe',
'surname' => 'Bloggs',
'age' => 23
),
12346 => array(
'id' => 12346,
'first_name' => 'Adam',
'surname' => 'Smith',
'age' => 18
),
12347 => array(
'id' => 12347,
'first_name' => 'Amy',
'surname' => 'Jones',
'age' => 21
)
);

print_r(array_sort($people, 'age', SORT_DESC)); // Sort by oldest first
print_r(array_sort($people, 'surname', SORT_ASC)); // Sort by surname






خروجی مثال:





/*
Array
(
[12345] => Array
(
[id] => 12345
[first_name] => Joe
[surname] => Bloggs
[age] => 23
)

[12347] => Array
(
[id] => 12347
[first_name] => Amy
[surname] => Jones
[age] => 21
)

[12346] => Array
(
[id] => 12346
[first_name] => Adam
[surname] => Smith
[age] => 18
)

)
Array
(
[12345] => Array
(
[id] => 12345
[first_name] => Joe
[surname] => Bloggs
[age] => 23
)

[12347] => Array
(
[id] => 12347
[first_name] => Amy
[surname] => Jones
[age] => 21
)

[12346] => Array
(
[id] => 12346
[first_name] => Adam
[surname] => Smith
[age] => 18
)

)
*/



مرجع: php.net

mashiat
October 16th, 2019, 11:25
سلام ایا این در php7 و php5 یکسان هست یا باید تغییراتی بدیم؟

CodeBox
October 17th, 2019, 11:11
سلام ایا این در php7 و php5 یکسان هست یا باید تغییراتی بدیم؟
سلام، وقت بخیر...
خروجی این قطعا کد از php نسخه 5.3.0 به بعد یکسان است.