رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
sort کردن آرایه چند بعدی
#1
سلام من می خوام این آرایه را بر اساس اندیس title و حروف الفبا فارسی sort کنم امکانش هست؟
    'contact' => array(
        'title'  => 'تماس با ما',
       'badge'  => 'contactUnreadMessage',
       'icon'   => 'fa fa-envelope',
       'action' => 'ContactAdminController@getIndex',
     ),
   'roles' => array(
       'title'   => 'گروه های کاربری',
       'icon'    => 'fa fa-users',
       'submenu' => array(
           'index' => array(
               'title'  => 'لیست',
               'action' => 'RoleAdminController@getIndex'
           ),
           'add'   => array(
               'title'  => 'اضافه کردن',
               'action' => 'RoleAdminController@getAdd'
           ),

       )
   ),
پاسخ
تشکر شده توسط:
#2
سلام

بله چرا نشه . PHP اینقدر شیرین است.

$a = array(
'contact' => array(
'title'  => 'تماس با ما',
  'badge'  => 'contactUnreadMessage',
  'icon'   => 'fa fa-envelope',
  'action' => 'ContactAdminController@getIndex',
),
'roles' => array(
  'title'   => 'گروه های کاربری',
  'icon'    => 'fa fa-users',
  'submenu' => array(
  'index' => array(
  'title'  => 'لیست',
  'action' => 'RoleAdminController@getIndex'
  ),
  'add'   => array(
  'title'  => 'اضافه کردن',
  'action' => 'RoleAdminController@getAdd'
  ),
  )
  ));
usort($a,function($a,$b){
return strcmp($a['title'],$b['title']); // ASC
#return strcmp($b['title'],$a['title']); // DESC
});
print_r($a);

خروجی
Array
(
    [0] => Array
        (
            [title] => تماس با ما
            [badge] => contactUnreadMessage
            [icon] => fa fa-envelope
            [action] => ContactAdminController@getIndex
        )

    [1] => Array
        (
            [title] => گروه های کاربری
            [icon] => fa fa-users
            [submenu] => Array
                (
                    [index] => Array
                        (
                            [title] => لیست
                            [action] => RoleAdminController@getIndex
                        )

                    [add] => Array
                        (
                            [title] => اضافه کردن
                            [action] => RoleAdminController@getAdd
                        )

                )

        )

)
پاسخ
تشکر شده توسط:
#3
مرسی ولی مشکلی که داره اینه که اون key آرایه حذف میشه و به جاش اندیس از 0 شروع میشه
پاسخ
تشکر شده توسط:
#4
راست میگین !

ولی کد زیر دیگه میشه

$a = array(
'contact' => array(
'title'  => 'تماس با ما',
  'badge'  => 'contactUnreadMessage',
  'icon'   => 'fa fa-envelope',
  'action' => 'ContactAdminController@getIndex',
),
'roles' => array(
  'title'   => 'گروه های کاربری',
  'icon'    => 'fa fa-users',
  'submenu' => array(
  'index' => array(
  'title'  => 'لیست',
  'action' => 'RoleAdminController@getIndex'
  ),
  'add'   => array(
  'title'  => 'اضافه کردن',
  'action' => 'RoleAdminController@getAdd'
  ),
  )
  ));
$price = array();
foreach ($a as $key => $row)
$price[$key] = $row['title'];
array_multisort($price, SORT_DESC, $a);
print_r($a);

http://docs.php.net/manual/en/function.a...tisort.php
http://stackoverflow.com/questions/15977...key-in-php
پاسخ
تشکر شده توسط: php
#5
از تابع uksort استفاده کنید.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 2 مهمان