نمایش نتایج: از شماره 1 تا 3 , از مجموع 3

موضوع: مرتب سازی آرایه های چند بعدی در php

  1. #1
    عضو انجمن CodeBox آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    Iran
    نوشته ها
    103
    تشکر تشکر کرده 
    1
    تشکر تشکر شده 
    28
    تشکر شده در
    21 پست

    پیش فرض مرتب سازی آرایه های چند بعدی در php


    مرتب سازی آرایه های چند بعدی در 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
    codebox.ir | تلفن: 7227261-713 | آدرس : شیراز، خیابان اردیبهشت، برج IT طبقه 10

    ما را دنبال کنید: ID : @codebox_ir

  2. تعداد تشکر ها از CodeBox به دلیل پست مفید


  3. # ADS




     

  4. #2
    عضو انجمن
    تاریخ عضویت
    Sep 2010
    نوشته ها
    187
    تشکر تشکر کرده 
    236
    تشکر تشکر شده 
    134
    تشکر شده در
    98 پست

    پیش فرض پاسخ : مرتب سازی آرایه های چند بعدی در php

    سلام ایا این در php7 و php5 یکسان هست یا باید تغییراتی بدیم؟


  5. #3
    عضو انجمن CodeBox آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    Iran
    نوشته ها
    103
    تشکر تشکر کرده 
    1
    تشکر تشکر شده 
    28
    تشکر شده در
    21 پست

    پیش فرض پاسخ : مرتب سازی آرایه های چند بعدی در php

    نقل قول نوشته اصلی توسط mashiat نمایش پست ها
    سلام ایا این در php7 و php5 یکسان هست یا باید تغییراتی بدیم؟
    سلام، وقت بخیر...
    خروجی این قطعا کد از php نسخه 5.3.0 به بعد یکسان است.
    codebox.ir | تلفن: 7227261-713 | آدرس : شیراز، خیابان اردیبهشت، برج IT طبقه 10

    ما را دنبال کنید: ID : @codebox_ir

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •