آرایه ها در PHP – مقدمه

در این بخش از آموزش پی اچ پی، می خواهیم با انواع آرایه ها در PHP آشنا شویم.  در ابتدا با تعریف آرایه در PHP آشنا می شویم.

سپس در مورد انواع آرایه ها در PHP صحبت خواهیم کرد. همچنین نحوه استفاده از آرایه در PHP را خواهیم آموخت. در ادامه درباره نحوه دسترسی به عناصر آرایه و همین طور جستجود در آرایه در پی اچ پی صحبت می کنیم.

در انتها نیز به کار با آرایه ها در PHP و همین طور حلقه foreach در آرایه و حلقه for در آرایه ها خواهیم پرداخت.

آرایه ها در php - وبمستر وردپرس

در ادامه آموزش کار با آرایه ها در PHP به توابع کار با آرایه ها اشاره خواهیم کرد. همچنین مثال های بسیار زیادی در مورد آرایه های تو در تو در PHP و همین طور آرایه های انجمنی در PHP خواهیم زد.

یکی دیگر از مباحث مطرح شده در این آموزش، مثال های کاربردی از آرایه های دو بعدی و همین طور آرایه های چند بعدی در PHP می باشد. همچنین در مورد ترکیب آرایه ها و ادغام آرایه ها نیز صحبت خواهیم کرد.

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

این آموزش دارای سرفصل زیر هست که می توانید با زدن روی هر لینک، به بخش مورد نظر خود منتقل شوید:

این آموزش، یکی از بخش های آموزش های رایگان PHP در سایت وبمستر وردپرس  می باشد. در صورتی که می خواهید به کلیه بخش های این سری آموزشی رایگان دسترسی داشته باشید، می توانید از لینک زیر استفاده کنید:

آرایه در PHP چیست ؟

در اکثر موارد، نوع داده هایی که در PHP تعریف می کنیم، عملا فقط یک مقدار را در یک متغیر ذخیره می کنید. اما با آرایه ها در PHP (و همین طور object) عملا می توانیم چندین نوع مقدار را در یک متغیر ذخیره کنیم.

عملا با آرایه می توانیم چندین مقدار را در آن واحد در یک متغیر یکتا داشته باشیم. در واقع یک متغیر آرایه ای می تواند شامل چندین عضو باشد.

در واقع آرایه، یک لیست از عناصر می باشد. این لیست توسط یک متغیر نگهداری می شود.

نکته: در صورتی که با متغیرها در PHP آشنایی ندارید، می توانید از مقاله دیگر سایت با عنوان «انواع متغیر ها در PHP» استفاده کنید.

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

دقت داشته باشید که یکی از قدرتمند زبان ها برای پردازش روی آرایه ها و کار با آن ها، زبان php می باشد این مورد نظر من، یکی از مزیت های php نسبت به زبان هایی مثل c# یا جاوا می باشد.

تعریف آرایه ها در PHP

برای تعریف یک آرایه در PHP ، می توانید از دو شکل مختلف استفاده کنید. در روش اول برای تعریف یک آرایه می باید از کلمه کلیدی array به همراه پرانتز های باز و بسته استفاده کنید.

در این روش در داخل پرانتز های باز و بسته، عناصر آرایه قرار داده می شوند. در نظر داشته باشید که عناصر آرایه توسط کاما یا ” ,  ” از همدیگر جدا می شوند.

روش دوم برای تعریف یک آرایه استفاده از short array syntax می باشد. در این روش دیگر نیازی به ذکر کلمه کلیدی array نبوده و شما عناصر آرایه را درون [ ] تعریف خواهید کرد. در واقع کلیه عناصر آرایه در بین براکت باز و بسته قرار خواهند گرفت.

در زیر دو مثال برای هر دو سینتکس تعریف آرایه ها در PHP زده شده است:

/*Simple array*/
$msn_simple_array = array( 5, 'Mehdi', 3.14, array( 1, 2, 3, 4 ) );
var_dump( $msn_simple_array );

echo '<hr>';

/*Short array syntax*/
$msn_short_array_syntax = [ 10, 20, 30, 40 ];

انواع آرایه ها در PHP

در کل سه نوع آرایه در PHP موجود می باشد. انواع آرایه ها در PHP عبارتند از:

  • آرایه های عددی یا Indexed Array در زبان PHP: 

    آرایه های که ایندکس آن ها به صورت عددی می باشد، Indexed arrays نامیده می شوند. یک نمونه از آن ها در مثال قبل نمایش داده شد.

    در واقع نحوه دسترسی به عناصر آرایه های عددی، توسط ایندکس عددی آن ها می باشد. ایندکس آرایه های عددی، در صورتی که در خود آرایه تعریف نشود، به صورت پیش فرض از صفر شروع می شود.

    در واقع اگر شما تعریف نکنید که شماره اندیس شروع یک آرایه چند است، ایندکس عددی آرایه از صفر شروع می گردد. این ایندکس عددی با اضافه شدن یک عنصر یا درایه به یک آرایه، یکی یکی اضافه می شود.

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

$msn_customized_array_index = [
  ۸  => 'ahmad',
  ۱۰ => 'Mehdi',
  'abbas',
  ۲۰ => 'Soltani',
  ۳۰ => 'Gholam',
  'ghanbarak',
  ۳۱ => 'mamad',
  'Havicheh',

];

var_dump( $msn_customized_array_index );

//The return is something like this: 
array (size=7)
  ۸ => string 'ahmad' (length=5)
  ۱۰ => string 'Mehdi' (length=5)
  ۱۱ => string 'abbas' (length=5)
  ۲۰ => string 'Soltani' (length=7)
  ۳۰ => string 'Gholam' (length=6)
  ۳۱ => string 'mamad' (length=5)
  ۳۲ => string 'Havicheh' (length=8)
  • آرایه های انجمنی یا Associative Array در زبان PHP: 

    نوع دوم از آرایه ها در PHP ، آرایه های انجمنی یا Associative arrays می باشد. در واقع هر عنصر از این نوع آرایه ها، شامل یک زوج مقدار به صورت key => value می باشد.

    آرایه های انجمنی، در واقع آرایه هایی هستند که ایندکس آن ها به جای عدد، به صورت رشته ای می باشند. در واقع هر عنصر یک آرایه انجمنی، به صورت یک زوج داده می باشند.

    به این صورت دسترسی به هر عنصر آرایه، توسط اسمی که به آن اختصاص داده شده است، می باشد. در واقع این آرایه ها توسط کلید های اسمی یا نامگذاری شده، قابل دسترس هستند. به همین دلیل به آن ها named keys هم گفته می شود.

    برای اینکه مشخص کنیم در هر ایندکس چه مقدار قرار دارد از علامت « <= » استفاده می کنیم.

/*Simple associative arrays*/
$msn_simple_associative_array = [
  'first_name' => 'Mehdi',
  'last_name'  => 'Soltani',
  'profession' => 'programmer',
];

var_dump( $msn_simple_associative_array );

//Return is something like this:
array (size=3)
  'first_name' => string 'Mehdi' (length=5)
  'last_name' => string 'Soltani' (length=7)
  'profession' => string 'programmer' (length=10)
  • آرایه های چند بعدی یا Multi-dimensional Array در زبان PHP: 

    نوع سوم از آرایه ها در PHP ، آرایه های چند بعدی یا Multidimensional array می باشند. این آرایه ها در واقع آرایه هایی هستند که خود شامل آرایه می باشند. در واقع یک آرایه چند بعدی، آرایه ای از آرایه ها می باشد.

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

    ضمن اینکه در آرایه های چند بعدی، حتی می توانیم مقدار تکی هم بدهیم و حتما لازم نیست که عناصر آرایه به صورت key/value تعریف شوند.

/*Simple Multidimensional arrays*/
$msn_simple_multidimensional_array = [
  [
    'first_name'  => 'Mehdi',
    'last_name'   => 'Soltani',
    'profession'  => 'programmer',
    'friend_name' => 'Agha Gholam',
  ],
  [
    'first_name' => 'Saeed',
    'last_name'  => 'Hoseini',
    'profession' => 'Digital Marketer',
  ],
  'abbas agha',
  ۶,
];

var_dump( $msn_simple_multidimensional_array );

//Return is something like this:
array (size=5)
  ۰ => 
    array (size=4)
      'first_name' => string 'Mehdi' (length=5)
      'last_name' => string 'Soltani' (length=7)
      'profession' => string 'programmer' (length=10)
      'friend_name' => string 'Agha Gholam' (length=11)
  ۱ => 
    array (size=3)
      'first_name' => string 'Saeed' (length=5)
      'last_name' => string 'Hoseini' (length=7)
      'profession' => string 'Digital Marketer' (length=16)
  ۲ => string 'abbas agha' (length=10)
  ۳ => int 6
انواع آرایه ها در PHP

دسترسی به عناصر آرایه و مقداری دهی به آرایه ها در PHP

بسته به اینکه چه آرایه ای را استفاده می کنیم، نحوه دسترسی به عناصر آن، ممکن است کمی با سایر آن ها متفاوت باشد.

در حالت کلی برای دسترسی به عناصر آرایه باید از اسم آرایه به همراه علامت [ ] (براکت باز و بسته) استفاده نمود. حال در صورتی که آرایه به صورت عددی باشد، کافی است از عدد مرتبط با ایندکس آن استفاده شود.

در صورتی که آرایه به صورت انجمنی باشد، می باید از نام کلید آن در درون براکت باز و بسته به صورت [‘key’] برای دسترسی به عناصر آن استفاده کرد.

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

در زیر مثال های متعددی در این بخش زده شده است که در هر کدام به صورت جداگانه به این مطلب اشاره شده است:

  • دسترسی به عناصر آرایه عددی در PHP: 

    برای دسترسی به عناصر آرایه عددی یا indexed array در PHP، کافی است از نام آرایه به همراه ایندکس عددی آرایه در داخل براکت باز و بسته استفاده نماییم.

    با استفاده از این روش، هم می توان از مقدار این عنصر آرایه در محاسبات برنامه استفاده کرد و هم می توان آن را مورد  تغییر قرار داد.

  • چک کردن وجود یک مقدار در آرایه پیش از استفاده از آن: 

    با توجه به موردی که در بالا اشاره شد، قبل از اینکه بخواهیم یک عنصر از آرایه را فراخوانی کنیم یا تغییر دهیم، موجود بودن آن را چک می کنیم.

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

    برای چک کردن وجود یک مقدار در یک خانه از آرایه می توانید از علامت «??» استفاده کنید. همین طور می توانید از تابع isset برای اینکار بهره ببرید.

  • دسترسی به عناصر آرایه انجمنی یا Associative array در PHP: 

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

    در این حالت نام آرایه به همراه [‘key’] ذکر می  گردد تا به عنصر مورد نظر، بتوان دسترسی داشت. در واقع مقدار خانه key برابر value می باشد.

/*Add or change array elements*/
$msn_customized_array_index[12] = 'Ghasem';
$msn_customized_array_index[10] = 'Mehran';
var_dump( $msn_customized_array_index );

$msn_simple_associative_array['first_name'] = 'gholam';
$msn_simple_associative_array['age']        = '230 years';
var_dump( $msn_simple_associative_array );

/*Check for being empty in array*/
var_dump( $msn_customized_array_index[42] ?? null );
var_dump( isset( $msn_customized_array_index[42] ) );
var_dump( empty( $msn_customized_array_index[42] ) );

echo isset( $msn_customized_array_index[42] ) ? $msn_customized_array_index[42] : 'Default Value';

//The return is in the following: 
array (size=8)
  ۸ => string 'ahmad' (length=5)
  ۱۰ => string 'Mehran' (length=6)
  ۱۱ => string 'abbas' (length=5)
  ۲۰ => string 'Soltani' (length=7)
  ۳۰ => string 'Gholam' (length=6)
  ۳۱ => string 'mamad' (length=5)
  ۳۲ => string 'Havicheh' (length=8)
  ۱۲ => string 'Ghasem' (length=6)

array (size=4)
  'first_name' => string 'gholam' (length=6)
  'last_name' => string 'Soltani' (length=7)
  'profession' => string 'programmer' (length=10)
  'age' => string '230 years' (length=9)
null
false
true
Default Value
  • اضافه کردن مقدار به آرایه در زبان PHP: 

    همان طور که در بالاتر نیز توضیح داده شد، شما می توانید با استفاده از اندیس آرایه، مقداری در آرایه را اضافه کنید. بنابراین برای اضافه کردن یک مقدار جدید به آرایه، شما می توانید از ایندکس آن (چه به صورت عددی و چه به صورت انجمنی) استفاده کنید.

    روش دیگر اضافه کردن یک مقدار به آرایه در زبان PHP، با استفاده از ذکر نام آرایه، به همراه استفاده از براکت و باز بسته به صورت خالی، در کنار این نام می باشد. شکل عمومی آن به صورت your_array_name[] می باشد.

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

*Add value to an array without having an index for it*/
$msn_adding_to_array[20] = 'Mehdi Soltani';
$msn_adding_to_array[]   = 100;
$msn_adding_to_array[]   = 'Agha Gholam';
var_dump( $msn_adding_to_array );

/*Simple Multidimensional arrays*/
$msn_simple_multidimensional_array = [
  [
    'first_name'  => 'Mehdi',
    'last_name'   => 'Soltani',
    'profession'  => 'programmer',
    'friend_name' => 'Agha Gholam',
  ],
  [
    'first_name' => 'Saeed',
    'last_name'  => 'Hoseini',
    'profession' => 'Digital Marketer',
  ],
  'abbas agha',
  ۶,
];

$msn_simple_multidimensional_array[] = [
  'first_name'  => 'Mehdi',
  'last_name'   => 'Gholami',
  'profession'  => 'Inkareh',
  'friend_name' => 'Saeed Hoseini',
];

var_dump( $msn_simple_multidimensional_array );

//The return is: 
array (size=3)
  ۲۰ => string 'Mehdi Soltani' (length=13)
  ۲۱ => int 100
  ۲۲ => string 'Agha Gholam' (length=11)

array (size=5)
  ۰ => 
    array (size=4)
      'first_name' => string 'Mehdi' (length=5)
      'last_name' => string 'Soltani' (length=7)
      'profession' => string 'programmer' (length=10)
      'friend_name' => string 'Agha Gholam' (length=11)
  ۱ => 
    array (size=3)
      'first_name' => string 'Saeed' (length=5)
      'last_name' => string 'Hoseini' (length=7)
      'profession' => string 'Digital Marketer' (length=16)
  ۲ => string 'abbas agha' (length=10)
  ۳ => int 6
  ۴ => 
    array (size=4)
      'first_name' => string 'Mehdi' (length=5)
      'last_name' => string 'Gholami' (length=7)
      'profession' => string 'Inkareh' (length=7)
      'friend_name' => string 'Saeed Hoseini' (length=13)



پیمایش آرایه ها در PHP یا Array Traversing

در بسیاری از موارد نیاز داریم که بر روی کلیه عناصر یک آرایه پیمایش انجام دهیم. این به معنی این است که ما بتوانیم خانه های آرایه را، تک به تک خوانده و به عنوان مثال، عملی را روی آن ها انجام دهیم یا از آن ها در اجرای برنامه خود استفاده نماییم.

برای این کار روش های مختلفی وجود دارد. ساده ترین روش استفاده از حلقه for یا while برای پیمایش آرایه ها می باشد. مشکل این روش ها مثلا برای حلقه for در آرایه، این می باشد که باید همواره طول یک آرایه را بدانیم. در این صورت می توانیم آن را پیمایش کنیم.

همین طور برای مثلا حلقه while در آرایه ، این مشکل وجود دارد که در صورت موجود نبودن عنصر آرایه در یک درایه خاص عددی، در این صورت با ارور مواجه می شویم.

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

نکته: در صورتی که با حلقه ها در PHP آشنایی ندارید، می توانید از مقاله زیر که به صورت کامل، حلقه ها در آن با مثال تشریح شده اند، استفاده نمایید:

  • محاسبه طول آرایه در PHP: 

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

    برای محاسبه طول آرایه کافی است از count( $your_array_name ) استفاده کنید.

  • استفاده از حلقه for در آرایه برای پیمایش آن: 

    یکی از روش های traversing یا همان پیمایش آرایه ها در PHP ، استفاده از حلقه for در آرایه می باشد. در این روش برای پیمایش طول آرایه، از مثلا عدد صفر شروع کرده و تا طول آرایه آن را تکرار می کنیم.

  • استفاده از حلقه while در آرایه برای پیمایش آرایه: 

    استفاده از حلقه while در آرایه ، همانند استفاده از حلقه for می باشد. برای گرفتن طول آرایه علاوه بر استفاده از تابع count ، می توانید از تابع sizeof نیز استفاده کنید.

/*Using for loop to iterate in an array*/
$simple_loop_on_array = [ 100, 200, 300 ];
for ( $i = 0; $i < count( $simple_loop_on_array ); $i ++ ) {
  echo $simple_loop_on_array[ $i ];
  if ( $i < count( $simple_loop_on_array ) - 1 ) {
    echo ' - ';
  }
}

echo '<br>';
/*Using while loop to iterate in an array*/
$counter = 0;
while ( $counter < count( $simple_loop_on_array ) ) {
  echo $simple_loop_on_array[ $counter ];
  if ( $counter < count( $simple_loop_on_array ) - 1 ) {
    echo ' - ';
  }
  $counter ++;
}

echo '<br>';
/*Check isset and not empty for an array before iterating*/
if ( isset( $simple_loop_on_array ) && ! empty( $simple_loop_on_array ) ) {
  for ( $i = 0; $i < count( $simple_loop_on_array ); $i ++ ) {
    echo $simple_loop_on_array[ $i ];
    if ( $i < count( $simple_loop_on_array ) - 1 ) {
      echo ' - ';
    }
  }
}

//The return is:
۱۰۰ - ۲۰۰ - ۳۰۰
۱۰۰ - ۲۰۰ - ۳۰۰
۱۰۰ - ۲۰۰ - ۳۰۰
  • دریافت کلیه کلید ها یا مقادیر در یک آرایه با استفاده از توابع کار با آرایه ها در PHP: 

    فرض کنید بخواهید فقط روی عناصر کلید یک آرایه پیمایش انجام دهید. یا فقط به value های آن احتیاج داشته باشید. در این شرایط، نیازی به استفاده از حلقه بر روی آرایه نخواهید داشت.

    خوشبختانه زبان PHP برای ساده تر شدن کار برنامه نویسان، انواع توابع کار با آرایه ها در PHP را ارائه کرده است. دو تا از این توابع array_keys و array_values می باشند.

    توسط این دو تابع می توانید به لیست کلید ها یا key های یک آرایه و مقادیر آن یا value های مرتبط با این کلید ها، دسترسی داشته باشید. خروجی هر دو این دستورات یک آرایه عددی شامل ایندکس ها یا کلید ها یا مقادیر یک آرایه می باشد.

  • استفاده از حلقه foreach در آرایه برای پیمایش آن ها: 

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

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

    شما می توانید در هنگام پیمایش یک آرایه با حلقه foreach ، در هر مرحله هم به کلید و هم به مقدار مرتبط با آن کلید، به صورت مستقیم دسترسی داشته باشید.

  • پیمایش آرایه های تو در تو در PHP با استفاده از حلقه های foreach تو در تو: 

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

/*Using array_keys to get keys in an array*/
$msn_get_array_keys   = array_keys( $msn_simple_associative_array );
$msn_get_array_values = array_values( $msn_simple_associative_array );
var_dump( $msn_get_array_keys );
var_dump( $msn_get_array_values );

/*Sample of traversing in multi-dimensional array */
$employees               = [];
$employees['employee-1'] = [
  'id'         => 1394,
  'first_name' => 'gholam',
  'last_name'  => 'gholami',
  'profession' => 'khafan programmer',
];

$employees['employee-2'] = [
  'id'         => 1395,
  'first_name' => 'Sina',
  'last_name'  => 'Sajadi',
  'profession' => 'front-end developer',
];

$employees['employee-3'] = [
  'id'         => 1396,
  'first_name' => 'Saeed',
  'last_name'  => 'Kamyabi',
  'profession' => 'back-end developer',
];


$employees['employee-4'] = [
  'id'         => 1397,
  'first_name' => 'Abas',
  'last_name'  => 'Hajkenari',
  'profession' => 'translator',
];

$employees['employee-5'] = [
  'id'         => 1398,
  'first_name' => 'Mamad',
  'last_name'  => 'Reshad',
  'profession' => 'operator',
];

$employees['employee-6'] = [
  'id'         => 1399,
  'first_name' => 'Matin',
  'last_name'  => 'Tayefi',
  'profession' => 'khafan operator',
];

$employees['employee-7'] = [
  'id'         => 1400,
  'first_name' => 'Siavash',
  'last_name'  => 'Sedaghat',
  'profession' => 'accountant',
];

$employees['employee-8'] = [
  'id'         => 1401,
  'first_name' => 'Siavash',
  'last_name'  => 'Kameli',
  'profession' => 'khafan accountant',
];

$departments      = [];
$employee_counter = 1;
foreach ( $employees as $employee ) {
  switch ( $employee_counter ) {
    case 1:
    case 2:
    case 3:
      $departments['software_team'][] = $employee;
      break;
    case 4:
    case 5:
    case 6:
      $departments['reservation_team'][] = $employee;
      break;

    case 7:
    case 8:
      $departments['accounting_team'][] = $employee;
      break;
  }

  $employee_counter ++;
}

foreach ( $departments as $key_department => $value_department ) {
  echo '<pre>';
  echo '<em> Employees of ' . $key_department . '</em>:<br>';
  foreach ( $value_department as $employeee ) {
    echo "\t" . '<strong>ID of Employee</strong>: ' . $employeee['id'];
    echo ' , <strong>Name: </strong>' . $employeee['first_name'];
    echo ' , <strong>Family:</strong> ' . $employeee['last_name'];
    echo ' , <strong>Profession:</strong> ' . $employeee['profession'];
    echo '<br>';
  }
  echo '</pre>';
}

echo '<br>';

//The return is : 
array (size=4)
  ۰ => string 'first_name' (length=10)
  ۱ => string 'last_name' (length=9)
  ۲ => string 'profession' (length=10)
  ۳ => string 'age' (length=3)

array (size=4)
  ۰ => string 'gholam' (length=6)
  ۱ => string 'Soltani' (length=7)
  ۲ => string 'programmer' (length=10)
  ۳ => string '230 years' (length=9)

 Employees of software_team:
  ID of Employee: 1394 , Name: gholam , Family: gholami , Profession: khafan programmer
  ID of Employee: 1395 , Name: Sina , Family: Sajadi , Profession: front-end developer
  ID of Employee: 1396 , Name: Saeed , Family: Kamyabi , Profession: back-end developer
 Employees of reservation_team:
  ID of Employee: 1397 , Name: Abas , Family: Hajkenari , Profession: translator
  ID of Employee: 1398 , Name: Mamad , Family: Reshad , Profession: operator
  ID of Employee: 1399 , Name: Matin , Family: Tayefi , Profession: khafan operator
 Employees of accounting_team:
  ID of Employee: 1400 , Name: Siavash , Family: Sedaghat , Profession: accountant
  ID of Employee: 1401 , Name: Siavash , Family: Kameli , Profession: khafan accountant
آموزش توابع کار با آرایه ها در PHP - وبمستر وردپرس
  • استفاده از توابع بازگشتی یا Recursive Function برای پیمایش روی آرایه ها چند بعدی در PHP: 

    در صورتی که یک آرایه چند بعدی داشته باشیم، در این صورت ممکن است می باید در هر مرحله از پیمایش آرایه، چک کنیم که آیا هر خانه آرایه، خود یک آرایه هست یا خیر.

    بنابراین در هر بار استفاده از foreach باید با تابع is_array چک کنیم که آیا عنصر مورد پیمایش آرایه هست یا نیست. اگر آرایه بود، دوباره foreach را بر روی آن اجرا کنیم و در غیر آن، از مقدار بدست آمده استفاده کنیم.

    برای حل این مساله، می توانیم از توابع بازگشتی در PHP به صورت زیر استفاده کنیم:

/*Sample of recursive function to iterate on n-dimensional array*/
function msn_iterate_array( $array, $level = 1 ) {
  foreach ( $array as $key => $value ) {
    if ( is_array( $value ) ) {
      //echo 'level is: '. $level . '<br>';
      echo str_repeat( "&nbsp;", 4 * ( $level - 1 ) );
      echo $key, ' => <br>';
      msn_iterate_array( $value, $level + 1 );
    } else {
      echo str_repeat( "&nbsp;", 4 * ( $level - 1 ) );
      echo $key, ' => ', $value, ' ';
    }
    echo '<br>';
  }

}

$msn_sample_recursive_on_array = [
  ۱۰,
  ۲۰,
  ۳۰,
  [
    'name'       => 'safdar',
    'family'     => 'safdari',
    'Jangoolers' => [
      'bandbazi',
      'sedaye soosk',
      'poshtak varo'
    ],
  ],
  ۵۰,
  [ ۲۰۰, ۳۰۰, ۵۰۰ ]
];

msn_iterate_array( $msn_sample_recursive_on_array );

//The return is something like this in the following:
۰ => 10 
۱ => 20 
۲ => 30 
۳ => 
    name => safdar 
    family => safdari 
    Jangoolers => 
        ۰ => bandbazi 
        ۱ => sedaye soosk 
        ۲ => poshtak varo 


۴ => 50 
۵ => 
    ۰ => 200 
    ۱ => 300 
    ۲ => 500

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

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

توابع مرتب سازی آرایه های PHP ، باعث می شود تا کار با آرایه های زبان پی اچ پی، بسیار آسان تر شود. در زیر به مهم ترین آن ها به اختصار، پرداخته ایم:

  • استفاده از تابع sort برای مرتب سازی مقادیر یک آرایه در PHP: 

    برای مرتب سازی مقادیر آرایه از کم به زیاد و به صورت صعودی، از تابع sort در php استفاده می شود. ورودی این تابع به صورت call by reference به آن پاس داده می شود. این به این معنی است که تغییرات انجام شده توسط این تابع، بر روی خود آرایه اصلی نیز اعمال خواهد شد.  در هنگام استفاده از این تابع باید به نکات زیر توجه کنید:

    خروجی تابع sort:

    خروجی این تابع برابر true یا false می باشد.

    عدم دستکاری بر روی مقادیر آرایه اصلی:

    همانگونه که اشاره شد، با فراخوانی این تابع بر روی آرایه، عملا کلیه مقادیر دستکاری می شود. برای اینکه این اتفاق نیافتند، می باید از یک متغیر واسط برای این کار استفاده کنید.

    اجرا تابع sort بر روی مقادیر ناهمگن مثل رشته و اعداد:

    در نظر داشته باشید که حتما نباید تابع sort بر روی آرایه هایی که مقدار صحیح دارند، اعمال شود. مقادیر آرایه می توانند شامل اعداد صحیح، اعداد اعشاری یا رشته باشند.

    برعکس کردن آرایه با استفاده از تابع array_reverse:

    برای برعکس کردن ترتیب مقادیر آرایه ، می توانید از تابع array_reverse نیز استفاده کنید.

    حفظ جایگاه کلید های آرایه با استفاده از تابع sort و rsort:

    در نظر داشته باشید که کلید های آرایه در هنگام استفاده از دستورهای sort و rsort ، حفظ می شود. در واقع فقط value های یک آرایه به صورت مرتب بازگشت داده می شود.

    در واقع اگر هدف شما این باشد که فقط مقادیر به صورت مرتب بازگشت داده شود، استفاده از این دو تابع مناسب خواهد بود. در غیر این صورت باید از تابع هایی چون asort یا arsort استفاده نمایید.

  • مرتب سازی نزولی مقادیر یک آرایه با دستور rsort در PHP: 

    در صورتی که بخواهید مقادیر یا value های یک آرایه را به صورت نزولی یا به حالت Descending مرتب نمایید، از تابع rsort می توانید استفاده کنید.

/*Simple array sort*/
$msn_simple_array_for_sort = [ 110, 13, 2, 253, 99, 45, 73, 56 ];
sort( $msn_simple_array_for_sort );
var_dump( $msn_simple_array_for_sort );

echo '<br>';

/*Simple array with different types and Descending sort*/
$msn_simple_array_for_sort = [ 110, 13, 'gholam', 2, 253, 99, 45, 85.2, 'Ghanbarak', 73, 56 ];
sort( $msn_simple_array_for_sort );
var_dump( $msn_simple_array_for_sort );

/*Simple array with different types and Descending sort*/
$msn_simple_array_for_sort = [ 110, 13, 'gholam', 2, 253, 99, 45, 85.2, 'Ghanbarak', 73, 56 ];
rsort( $msn_simple_array_for_sort );
var_dump( $msn_simple_array_for_sort );

//The return is:
array (size=8)
  ۰ => int 2
  ۱ => int 13
  ۲ => int 45
  ۳ => int 56
  ۴ => int 73
  ۵ => int 99
  ۶ => int 110
  ۷ => int 253

array (size=11)
  ۰ => string 'Ghanbarak' (length=9)
  ۱ => string 'gholam' (length=6)
  ۲ => int 2
  ۳ => int 13
  ۴ => int 45
  ۵ => int 56
  ۶ => int 73
  ۷ => float 85.2
  ۸ => int 99
  ۹ => int 110
  ۱۰ => int 253

array (size=11)
  ۰ => int 253
  ۱ => int 110
  ۲ => int 99
  ۳ => float 85.2
  ۴ => int 73
  ۵ => int 56
  ۶ => int 45
  ۷ => int 13
  ۸ => int 2
  ۹ => string 'gholam' (length=6)
  ۱۰ => string 'Ghanbarak' (length=9)
  • مرتب سازی آرایه های انجمنی در PHP با استفاده از دستور asort: 

    همانگونه که قبل تر بیان شد، توسط دو تابع قبل، آرایه فقط بر اساس مقادیر مرتب می شد و ترتیب کلید های آن حفظ نمی شد. برای مرتب سازی مقادیر یک آرایه انجمنی با ضمن حفظ کلید های آرایه، از دستور asort استفاده می شود.

    دستور asort مقادیر آرایه را بر اساس ترتیب صعودی، مرتب می کند. ضمن اینکه کلید های مرتبط با هر مقدار نیز به همراه این دستور، حفظ خواهد شد.

  • مرتب سازی نزولی مقادیر یک آرایه با دستور arsort در PHP در آرایه های انجمنی: 

    دستور arsort کارکردی همانند asort دارد با این تفاوت که عناصر آرایه انجمنی، با حفظ ترتیب کلیدهای آن، به صورت نزولی مرتب خواهند شد.

  • مرتب سازی صعودی مقادیر آرایه انجمنی یا Associative array بر اساس کلید های آن با دستور ksort:

    در صورتی که بخواهید یک آرایه Associative یا انجمنی را به صورت صعودی و بر اساس کلید های آن مرتب کنید، می توانید از دستور ksort استفاده نمایید.

  • مرتب سازی نزولی مقادیر آرایه انجمنی یا Associative array بر اساس کلید های آن با دستور krsort:

    در صورتی که بخواهید یک آرایه Associative یا انجمنی را به صورت نزولی و بر اساس کلید های آن مرتب کنید، می توانید از دستور krsort استفاده نمایید.

در زیر چند مثال بسیار ساده برای درک بهتر نحوه مرتب سازی در آرایه های انجمنی،  زده شده است. در انتهای کدها هم، می توانید نتیجه خروجی آن را نیز مشاهده فرمایید:

*Simple asort for associative array*/
$simple_asort_for_associative_array_1 = [
  'first'  => 'Mehdi',
  'second' => 'gholam',
  'third'  => 'Akbar',
  'forth'  => 'Jafar',
];
asort( $simple_asort_for_associative_array_1 );
var_dump( $simple_asort_for_associative_array_1 );

/*Simple arsort for associative array*/
$simple_asort_for_associative_array_2 = [
  'first'  => 'Soltani',
  'second' => 'gholami',
  'third'  => 'Akbari',
  'forth'  => 'Jafari',
];

arsort( $simple_asort_for_associative_array_2 );
var_dump( $simple_asort_for_associative_array_2 );

/*Simple ksort for associative array*/
$simple_asort_for_associative_array_3 = [
  'name'   => 'Mehdi',
  'family' => 'Soltani',
  'id'     => '7728028',
  'age'    => '22',
];

ksort( $simple_asort_for_associative_array_3 );
var_dump( $simple_asort_for_associative_array_3 );

/*Simple krsort for associative array*/
$simple_asort_for_associative_array_3 = [
  'name'   => 'Mehdi',
  'family' => 'Soltani',
  'id'     => '7728028',
  'age'    => '22',
];

krsort( $simple_asort_for_associative_array_3 );
var_dump( $simple_asort_for_associative_array_3 );

//The return is: 

array (size=4)
  'third' => string 'Akbar' (length=5)
  'forth' => string 'Jafar' (length=5)
  'first' => string 'Mehdi' (length=5)
  'second' => string 'gholam' (length=6)

array (size=4)
  'second' => string 'gholami' (length=7)
  'first' => string 'Soltani' (length=7)
  'forth' => string 'Jafari' (length=6)
  'third' => string 'Akbari' (length=6)

array (size=4)
  'age' => string '22' (length=2)
  'family' => string 'Soltani' (length=7)
  'id' => string '7728028' (length=7)
  'name' => string 'Mehdi' (length=5)

array (size=4)
  'name' => string 'Mehdi' (length=5)
  'id' => string '7728028' (length=7)
  'family' => string 'Soltani' (length=7)
  'age' => string '22' (length=2)

مرتب سازی سفارشی در PHP

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

این مورد بسیار کاربردی بوده و در بسیار از موارد ممکن است استفاده شود. بیشترین کاربرد تابع های مرتب سازی سفارشی، زمانی می باشد که شما آرایه ای از آرایه ها یا همان Multi dimensional array یا آرایه ای از اشیا را دارید. (منظور همان Array of Objects می باشد)

در این صورت شما نیاز خواهید داشت که تابع هایی که خودتان برای مرتب سازی تعریف کرده اید، استفاده نمایید. خوشبختانه برای این موضوع، زبان PHP امکانات بسیاری را فراهم کرده است.

برای این کار، اولین و ساده ترین تابع که می توانید استفاده کنید، usort می باشد. توابع مختلف از این دست مثل uasort و همین طور uksort ، این قابلیت را دارند که به عنوان پارامتر، یک تابع سفارشی به آن پاس داده شود.

این تابع سفارشی، عملا کار سفارشی سازی عملیات سورت بر روی داده های ما را انجام خواهد داد.

اول اسم این تابع ها یعنی حرف u، بیانگر کلمه «User-defined» می باشد. در ادامه به معرفی این توابع می پردازیم.

  • استفاده از تابع usort برای مرتب سازی سفارشی آرایه ها در PHP: 

    تابع usort عملیات مرتب سازی سفارشی بر روی مقادیر یک آرایه انجام می دهد. برای این کار از یک تابع که توسط خود کاربر مشخص شده، استفاده می نماید. این تابع می تواند هم به صورت صریح و هم به صورت ضمنی در هنگام استفاده از دستور usort تعریف گردد.

    نحوه کار تابع usort به چه صورت می باشد؟

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

    در این تابع مقایسه بین آن ها انجام شده و سپس یکی از مقادیر ۱ یا ۰ یا -۱ بازگشت داده می شود. اگر دو مقدار را مثلا a و  b فرض کنیم، هر بار a با b  مقایسه شده و اگر اولی بزرگتر بود، عدد یک، اگر کوچک تر بود، عدد منفی یک و اگر مساوی بود عدد ۰ بازگشت داده می شود.

    در این صورت، اگر عدد اول ، بزرگتر از عدد دوم بود، در این صورت آن ها باهم جابجا می شوند. این عمل به صورت بازگشتی ادامه پیدا می کند تا در نهایت کل آرایه به صورت صعودی مرتب شود.

    برای اینکه با نحوه کار این تابع آشنا شوید، در کلیه مراحل، مقادیر a و  b نیز در خروجی نمایش داده شده اند.

    یک مثال کاربردی در این زمینه این می باشد که شما می خواهید مثلا عناصر آرایه را بر اساس طول آن ها براساس نزولی مرتب نمایید. در این صورت می توانید یک تابع سفارشی بنویسید که هر بار طول هر متغیر فرستاده شده را با بعدی مقایسه می کند و در صورت کوچک تر بودن آن، آن را جابجا می کند.

/*Simple usort with */
$msn_usort_number = [ 4, 8, 3, 6, 2 ];
function msn_usort_for_number( $a, $b ) {
  if ( $a == $b ) {
    return 0;

  }
  echo "a: $a & b: $b <br>";

  return ( $a < $b ) ? - 1 : 1;
}

usort( $msn_usort_number, 'msn_usort_for_number' );
var_dump( $msn_usort_number );

/*User define sort by string length with usort in DESC mode*/

$animals = [ 'dog', 'tiger', 'giraffe', 'bear' ];

usort( $animals, function ( $a, $b ) {
  return strlen( $b ) - strlen( $a );
} );

var_dump( $animals );

//The return is:
a: 4 & b: 8 
a: 8 & b: 3 
a: 4 & b: 3 
a: 8 & b: 6 
a: 4 & b: 6 
a: 8 & b: 2 
a: 6 & b: 2 
a: 4 & b: 2 
a: 3 & b: 2 

array (size=5)
  ۰ => int 2
  ۱ => int 3
  ۲ => int 4
  ۳ => int 6
  ۴ => int 8

array (size=4)
  ۰ => string 'giraffe' (length=7)
  ۱ => string 'tiger' (length=5)
  ۲ => string 'bear' (length=4)
  ۳ => string 'dog' (length=3)
  • استفاده از تابع uasort برای مرتب سازی سفارشی آرایه ها در PHP: 

    تابع uasort عملیات مرتب سازی سفارشی بر روی یک آرایه از نوع Associative انجام می دهد. برای این کار از یک تابع که توسط خود کاربر مشخص شده، استفاده می نماید. این تابع می تواند هم به صورت صریح و هم به صورت ضمنی در هنگام استفاده از دستور uasort تعریف گردد.

    برای مرتب سازی از مقادیر یا value ها استفاده می شود.

  • استفاده از تابع uksort برای مرتب سازی سفارشی آرایه ها در PHP: 

    تابع uksort عملیات مرتب سازی سفارشی بر روی یک آرایه از نوع Associative انجام می دهد. برای این کار از یک تابع که توسط خود کاربر مشخص شده، استفاده می نماید. این تابع می تواند هم به صورت صریح و هم به صورت ضمنی در هنگام استفاده از دستور uksort تعریف گردد.

    برای مرتب سازی از کلید ها یا key ها استفاده می شود.

$msn_score = [
  'math'     => 18.5,
  'physics'  => 14.25,
  'history'  => 16,
  'sport'    => 20,
  'jeopardy' => 16
];

function msn_uasort_for_score( $x, $y ) {
  if ( $x == $y ) {
    return 0;
  }

  return ( $x < $y ) ? - 1 : 1;
}

uasort( $msn_score, 'msn_uasort_for_score' );
var_dump( $msn_score );
uksort( $msn_score, 'msn_uasort_for_score' );
var_dump( $msn_score );

//The return is:
array (size=5)
  'physics' => float 14.25
  'history' => int 16
  'jeopardy' => int 16
  'math' => float 18.5
  'sport' => int 20

array (size=5)
  'history' => int 16
  'jeopardy' => int 16
  'math' => float 18.5
  'physics' => float 14.25
  'sport' => int 20
  • یک مثال کاربردی برای استفاده از usort: 

    فرض کنید یک آرایه از object ها به صورت زیر دارید. هر شی (که مثلا اطلاعات یک پست در سایت می باشد)خود شامل دو خاصیت می باشد. اولی مثلا زمان ایجاد یک پست بوده و دومی امتیاز داده شده به آن پست می باشد.

    حال می خواهید پست ها را بر اساس تاریخ انتشار آن ها به صورت ascending مرتب نمایید. برای اینکار می توانید از روش زیر استفاده نمایید:

// CREATE A TEST DATA SET - AN ARRAY OF OBJECTS
$obj          = new stdClass;
$obj->created = '2019-09-06';
$obj->rating  = '28';
$arr[0]       = $obj;
$obj          = new stdClass;
$obj->created = '2019-09-06';
$obj->rating  = '42';
$arr[1]       = $obj;
$obj          = new stdClass;
$obj->created = '2019-09-08';
$obj->rating  = '23';
$arr[3]       = $obj;
$obj          = new stdClass;
$obj->created = '2019-09-09';
$obj->rating  = '25';
$arr[4]       = $obj;
$obj          = new stdClass;
$obj->created = '2019-09-11';
$obj->rating  = '23';
$arr[6]       = $obj;
$obj          = new stdClass;
$obj->created = '2019-09-07';
$obj->rating  = '20';
$arr[7]       = $obj;
$obj          = new stdClass;
$obj->created = '2019-09-10';
$obj->rating  = '45';
$arr[10]      = $obj;

// A FUNCTION TO COMPARE created PROPERTIES
function sort_created_asc( $a, $b ) {
  return ( $a->created < $b->created ) ? - 1 : 1;
}

// SORT BY created PROPERTY
usort( $arr, 'sort_created_asc' );
echo PHP_EOL . "SORTED BY created: " . PHP_EOL;
var_dump( $arr );

//The return is:
array (size=7)
  ۰ => 
    object(stdClass)[2]
      public 'created' => string '2019-09-06' (length=10)
      public 'rating' => string '42' (length=2)
  ۱ => 
    object(stdClass)[1]
      public 'created' => string '2019-09-06' (length=10)
      public 'rating' => string '28' (length=2)
  ۲ => 
    object(stdClass)[6]
      public 'created' => string '2019-09-07' (length=10)
      public 'rating' => string '20' (length=2)
  ۳ => 
    object(stdClass)[3]
      public 'created' => string '2019-09-08' (length=10)
      public 'rating' => string '23' (length=2)
  ۴ => 
    object(stdClass)[4]
      public 'created' => string '2019-09-09' (length=10)
      public 'rating' => string '25' (length=2)
  ۵ => 
    object(stdClass)[7]
      public 'created' => string '2019-09-10' (length=10)
      public 'rating' => string '45' (length=2)
  ۶ => 
    object(stdClass)[5]
      public 'created' => string '2019-09-11' (length=10)
      public 'rating' => string '23' (length=2)
مرتب سازی آرایه ها در PHP - وبمستر وردپرس

مرتب سازی چندگانه آرایه با استفاده از array_multisort

یکی دیگر از توابع بسیار کاربردی برای استفاده بر روی آرایه ها، تابع array_multisort می باشد. با استفاده از این تابع ما می توانیم مرتب سازی های مختلف بر روی یک آرایه یا چندین آرایه داشته باشیم.

خروجی تابع array_multisort یک آرایه مرتب شده است. شما می توانید یک یا چندین آرایه به این تابع assign کنید. این تابع ابتدا آرایه اول را بر اساس ترتیب مرتب سازی (صعودی یا نزولی) و همین طور نوع مرتب سازی، مرتب می نماید.

سپس به سراغ آرایه دوم رفته و همین کار را تا انتها برای سایر آرایه ها نیز انجام می دهد. پارامتر هایی که به همراه هر آرایه می توان به آن اختصاص داد، شامل sortorder و همین طور sorttype می باشد.

  • انواع ترتیب مرتب سازی یا sortorder در تابع array_multisort: 

    برای این پارامتر، دو گزینه SORT_ASC و همین طور SORT_DESC ، موجود می باشد. همانگونه که از نام آن ها نیز مشخص است، اولی آرایه را به صورت ascending یا همان صعودی مرتب می کند. دومی نیز آرایه را به صورت descending یا همان نزولی مرتب می نماید.

    حالت پیش فرض بر روی حالت SORT_ASC می باشد. این یعنی در صورتی که شما sortorder را برای آرایه مشخص نکنید، به صورت پیش فرض به صورت صعودی مرتب خواهد شد.

  • انواع مرتب سازی یا sorttype در تابع array_multisort: 

    حالت های مختلفی برای پارامتر های ارسالی این بخش وجود دارد که در زیر به صورت خلاصه به آن ها اشاره شده است:

    SORT_REGULAR :

    در این حالت مرتب سازی به حالت عادی انجام می شود. در حالت پیش فرض نیز در صورت تعریف نشدن آن، از این مورد استفاده می شود.

    SORT_NUMERIC :

    در این حالت المنت های آرایه مورد نظر بر اساس مقادیر عددی مرتب می شوند.

    SORT_STRING :

    در این حالت المنت های آرایه مورد نظر به عنوان رشته با هم مقایسه شده و مرتب می گردند.

    SORT_LOCALE_STRING :

    در این حالت المنت های آرایه مورد نظر به عنوان رشته و بر مبنای زبان مورد نظر مورد مرتب سازی قرار می گیرند.

    SORT_NATURAL :

    در این حالت المنت های آرایه مورد نظر به عنوان رشته اما به صورت واقعی باهم مقایسه و مرتب می گردند. این حالت بسیار شبیه به کار تابع natsort می باشد.

    SORT_FLAG_CASE :

    این پارامتر به صورت bitwise می تواند در ترکیب با SORT_STRING و یا SORT_NATURAL و به صورت ترکیب OR مورد استفاده قرار گیرد. این باعث می گردد، تا مرتب سازی بر اساس رشته ها، بدون در نظر گرفتن کوچک بودن یا بزرگ بودن آن ها، انجام گردد.

در زیر یک چندین مثال ساده برای درک بهتر نحوه کار این تابع آورده شده است:

/*Sort multi-dimensional array*/
$animal_array      = [ "Dog", "Dog", "Cat" ];
$animal_name_array = [ "Pluto", "Fido", "Missy" ];

// sorting multiple arrays
array_multisort( $animal_array, SORT_ASC, $animal_name_array, SORT_DESC );
var_dump( $animal_array );
var_dump( $animal_name_array );

$multi_dimensional = [
  [ "۱۰", ۱۱, ۱۰۰, ۱۰۰, "a" ],
  [ ۱, ۲, "۲", ۳, ۱ ],
];
array_multisort( $multi_dimensional[0], SORT_ASC, SORT_STRING,
  $multi_dimensional[1], SORT_NUMERIC, SORT_DESC );
var_dump( $multi_dimensional );

/*
 * https://php.net/manual/en/function.array-multisort.php
 * */

/*Based on natural sort*/
$multi_dimensional = [
  [ "۱۰", ۱۱, ۱۰۰, ۱۰۰, "a" ],
  [ ۱, ۲, "۲", ۳, ۱ ],
];
array_multisort( $multi_dimensional[0], SORT_NATURAL,
  $multi_dimensional[1], SORT_NUMERIC, SORT_DESC );
var_dump( $multi_dimensional );


/*If you need to sort insensitive, you can use from that*/

$sort_by_flag_case = [
  [ 'Mehdi', 'ghazanfar', 'mehdi', 'Gholam' ],
  [ 'Soltani', 'ghazanfari', 'soltani', 'Gholami' ],
];

array_multisort( $sort_by_flag_case[1], SORT_FLAG_CASE | SORT_NATURAL );
var_dump( $sort_by_flag_case );

//The return is: 
array (size=3)
  ۰ => string 'Cat' (length=3)
  ۱ => string 'Dog' (length=3)
  ۲ => string 'Dog' (length=3)

array (size=3)
  ۰ => string 'Missy' (length=5)
  ۱ => string 'Pluto' (length=5)
  ۲ => string 'Fido' (length=4)

array (size=2)
  ۰ => 
    array (size=5)
      ۰ => string '10' (length=2)
      ۱ => int 100
      ۲ => int 100
      ۳ => int 11
      ۴ => string 'a' (length=1)
  ۱ => 
    array (size=5)
      ۰ => int 1
      ۱ => int 3
      ۲ => string '2' (length=1)
      ۳ => int 2
      ۴ => int 1

array (size=2)
  ۰ => 
    array (size=5)
      ۰ => string '10' (length=2)
      ۱ => int 11
      ۲ => int 100
      ۳ => int 100
      ۴ => string 'a' (length=1)
  ۱ => 
    array (size=5)
      ۰ => int 1
      ۱ => int 2
      ۲ => int 3
      ۳ => string '2' (length=1)
      ۴ => int 1

array (size=2)
  ۰ => 
    array (size=4)
      ۰ => string 'Mehdi' (length=5)
      ۱ => string 'ghazanfar' (length=9)
      ۲ => string 'mehdi' (length=5)
      ۳ => string 'Gholam' (length=6)
  ۱ => 
    array (size=4)
      ۰ => string 'ghazanfari' (length=10)
      ۱ => string 'Gholami' (length=7)
      ۲ => string 'Soltani' (length=7)
      ۳ => string 'soltani' (length=7)

بعضی سوالات متداول در مورد آرایه ها

در بخش زیر بعضی از سوالات رایج در مورد آرایه ها که مورد سوال دوستان می باشد، قرار داده شده است. امیدوارم که این بخش نیز به کار دوستان بیاید:

  • دسترسی به عناصر خاصی از آرایه: 

    این سوال را یک از دوستان در بخش کامنت های این مقاله پرسیده بودند که تصمیم گرفتم آن را در این بخش قرار بدهم.

    سوال از این قرار است: چه دستوری باید بنویسیم تا فقط مقدار های خاصی از یک آرایه بتوانیم نمایش بدهیم؟

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

    برای این کار باید از regex استفاده کنید. یک مثال ساده برای آن، به صورت زیر می باشد:

در زیر یک چندین مثال ساده برای درک بهتر نحوه کار این تابع آورده شده است:

$temp_array = ['vahid@','neda','saeed@','fatemeh','nafiseh','gholam@'];

$result = [];

foreach ($temp_array as $item) {
  if (1 === preg_match('/@$/', $item)) {
    $result[] = $item;
  }
}

var_dump($result);

//The result is something like this: 
array (size=3)
  ۰ => string 'vahid@' (length=6)
  ۱ => string 'saeed@' (length=6)
  ۲ => string 'gholam@' (length=7)

نتیجه گیری برای آموزش کار با آرایه های PHP

در این سری از آموزش های PHP ،با آموزش استفاده از آرایه در PHP در خدمت شما دوستان عزیز بودیم. در ابتدا در مورد اینکه آرایه در PHP چیست و چه کاربردی دارد، صحبت کردیم.

پس از آن به نحوه تعریف و نمایش عناصر آرایه در PHP اشاره کردیم. سپس انواع آرایه ها در PHP را مورد بررسی قرار داریم. در ادامه در مورد دسترسی به عناصر آرایه و مقدار دهی به آن صحبت کردیم.

سپس نحوه پیمایش آرایه در PHP را بیان کردیم و در ادامه نیز با روش های مرتب سازی آرایه های PHP آشنا شدیم. در ادامه مرتب سازی سفارشی آرایه را نیز مورد بررسی قرار دادیم.

درانتها نیز، با مفهوم مرتب سازی چندگانه بر روی یک یا چندین آرایه آشنا شدیم.

ممکن است شما با موارد بیشتری در این حوزه آشنا باشید، که ما فراموش کرده ایم تا آن ها را در این مقاله قرار دهیم.

اگر شما از این موارد آگاه هستید، حتما در بخش نظرات عنوان کنید تا آن را به مقاله “آموزش کار با آرایه در PHP” اضافه کنیم. در ضمن اگر این مقاله را مفید دیدید، حتما آن را به دوستان خود معرفی کرده یا در شبکه های اجتماعی به اشتراک بگذارید.

نظر شما در درباره این مقاله چیست؟

راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:

شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید: