مرتب سازی آرایه های چند بعدی با استفاده از اندیس خاص (sort array)

۵ سال پیش(به روز شده در ۵ سال پیش) پی اچ پی(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

برچسبها

هیچ برچسبی موجود نیست.

صفحات پیشنهادی

تعریف تابع در تابع...

برای فراخوانی تابعی که در درون تابع دیگر ایجاد شده است باید ابتدا تابع پدر فراخوانی شود و سپس تابع فرزند قابل دسترس خواهد بود. مثال: function foo() { function bar() { echo "Hello World!"; ...

تابع نمایش امن ایمیل به کاربر...

تابع مورد نظر ، ایمیل کاربر را به حالت مطمئن(امن) نمایش می دهد تا کل آدرس افشا نشود. function printEMail($email) { $explode = explode('@', $email); return substr($explode[0], 0, 7).'...@'.$explo...

تشخیص حجم فایل با استفاده از فرمت ورودی...

این تابع حجم فایل را گرفته و سپس با توجه به فرمت مشخص شده خروجی را مشخص خواهد کرد. آرگومان‌های ورودی کاملا واضح هستند اما باید گفت که مقدار precision$ قسمت اعشار خروجی را مشخص می کند که به طور پی...

تابع ()mysql_data_seek در php...

در PHP بارها پیش می آید بعد از کوئری SELECT از تابع ()mysql_fetch_assoc یا تابع ()mysql_fetch_array استفاده کنید......

نظر

نظری ثبت نشده است.
captcha image reload