در قسمت قبلی با دستور شرطی Switch…Case در PHP آشنا شدیم. در این بخش از سری آموزش php قصد داریم نحوه ذخیره چندین مقدار در یک متغیر با آرایه ها در PHP را آموزش بدیم.
آرایه ها در PHP
آرایه (Array) یک متغیر پیچیده است که به ما اجازه ذخیره بیشتر از یک مقدار یا گروهی از مقدارها در یک نام متغیر را می دهد.
PHP می تواند هر نوع مقداری مانند رشته ها, اعداد, آبجکت, توابع و حتی دیگر آرایه ها را ذخیره کند که باعث می شود ساختار داده های پیچیده ای مثل آرایه ای از آبجکت ها یا آرایه ای از آرایه ها داشته باشیم.
فرض کنیم شما می خواهید نام رنگ ها در کد جاوا اسکریپت را ذخیره کنید. برای ذخیره کردن یک به یک نام رنگ ها شما باید بصورت زیر متغیر تعریف کنید:
1 2 3 4 5 |
<?php $color1 = "Red"; $color2 = "Green"; $color3 = "Blue"; ?> |
اما اگر مثلا نیاز بود نام شهر یا استان های یک کشور را در متغیر ها ذخیره کنیم, در اینصورت شاید بیشتر از ۱۰۰ متغیر نیاز بود. بنابراین ذخیره هر کدام بصورت جداگانه در متغیرهای جدا خسته کننده و سخت است.
همچنین داشتن تعداد زیادی متغیر همزمان و دسترسی به آنها کار بسیار سختی است و اینجاست که آرایه ها وارد می شوند.
آرایه ها در php یا تمام زبان های برنامه نویسی یک ساختار مرتب را برای ذخیره مقادیر چندگانه یا گروهی از مقادیر ارایه می دهد.
انواع آرایه ها در PHP
سه نوع آرایه که می توانید بسازید بصورت زیر است :
- آرایه های ایندکس شده (indexed) – یک آرایه با کلید (key) عددی.
- آرایه های انجمنی (Associative) – یک آرایه که هر کلید, مقدار بخصوص خود را دارد.
- آرایه های چندبعدی یا تو در تو (Multidimensional) – یک آرایه که خودش شامل یک یا چند آرایه است.
آرایه های ایندکس شده (indexed) در PHP
یک آرایه ایندکس گذاری شده یا عددی, هر عنصر آرایه را به همراه یک ایندکس عددی ذخیره می کند.
مثال زیر دو راه برای ساخت آرایه های ایندکس شده را نشان می دهد.
آسان ترین راه بصورت زیر است :
1 2 3 4 |
<?php // Define an indexed array $colors = array("Red", "Green", "Blue"); ?> |
نکته: در یک آرایه عددی یا ایندکس شده, ایندکس ها بصورت خودکار اختصاص داده شده و با ۰ شروع می شوند, و مقادیر می توانند هر نوع داده ای باشند.
این مثال دقیقا کار مثال بالا را انجام می دهد که البته بصورت دستی ایندکس ها نوشته شده است.
1 2 3 4 5 |
<?php $colors[0] = "Red"; $colors[1] = "Green"; $colors[2] = "Blue"; ?> |
آرایه های انجمنی (Associative) در PHP
در یک آرایه انجمنی, کلید های اختصاص داده شده به مقادیر می توانند بصورت اختیاری و رشته های تعریف شده کاربر باشند.
مثال زیر نحوه استفاده از کلیدها به جای ایندکس های عددی را نشان می دهد.
1 2 3 4 |
<?php // Define an associative array $ages = array("Peter"=>22, "Clark"=>32, "John"=>28); ?> |
این مثال دقیقا کار مثال بالا را انجام می دهد اما یک راه متفاوت برای ساخت آرایه انجمنی را نشان می دهد.
1 2 3 4 5 |
<?php $ages["Peter"] = "22"; $ages["Clark"] = "32"; $ages["John"] = "28"; ?> |
آرایه های چندبعدی یا تو در تو (Multidimensional) در PHP
یک آرایه چندبعدی, آرایه ای است که هر عنصر می تواند یک آرایه باشد و هر عنصر می تواند یک آرایه دیگر را داخل خود داشته باشد و آن آرایه هم آرایه دیگر و به اینصورت تو در تو آرایه هایی را ایجاد کنند.
یک مثال از آرایه های چندبعدی را در کد زیر می بینید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php // Define a multidimensional array $contacts = array( array( "name" => "Peter Parker", "email" => "peterparker@mail.com", ), array( "name" => "Clark Kent", "email" => "clarkkent@mail.com", ), array( "name" => "Harry Potter", "email" => "harrypotter@mail.com", ) ); // Access nested value echo "Peter Parker's Email-id is: " . $contacts[0]["email"]; ?> |
نمایش ساختار و مقدار آرایه ها
توجه داشته باشید که با دستورات چاپ خروجی مثل echo و print که قبلا معرفی کردیم نمی توانید مقادیر و ساختار آرایه را چاپ/مشاهده کنید
بنابرااین می توانید ساختار و مقدار هر آرایه ای را با دو دستور var_dump()
یا print_r()
ببینید.
دستور print_r()
اطلاعات کمتری از آرایه نمایش می دهد. مثال زیر را در نظر بگیرید :
1 2 3 4 5 6 7 |
<?php // Define array $cities = array("London", "Paris", "New York"); // Display the cities array print_r($cities); ?> |
خروجی مثال بالا که دستور print_r()
است بصورت زیر می باشد :
این خروجی کلید و مقادیر هر عنصر در آرایه را چاپ می کند برای دریافت اطلاعات بیشتر, می توانید از دستور var_dump()
که بسیار پر استفاده است, بهره ببرید :
1 2 3 4 5 6 7 |
<?php // Define array $cities = array("London", "Paris", "New York"); // Display the cities array var_dump($cities); ?> |
خروجی دستور var_dump()
بصورت زیر است :
این خروجی نوع داده هر عنصر, مثل تعداد کاراکترهای رشته, کلید و مقادیر را چاپ می کند.
توابع مهم زیادی برای کار با آرایه ها وجود دارد و عملیات زیادی را میتوانید روی آرایه انجام بدید که بیشتر این مباحث را قبلا بصورت مقالات جداگانه منتشر کردیم که حتما مطالعه کنید :
امیدوارم در این بخش آموزش PHP, از کار با آرایه ها در php نهایت استفاده را برده باشید.
در بخش بعدی کار با حلقه ها در PHP را یاد می گیریم.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید
سلام حسن جان میخوام دو آرایه رو جمع کنم با هم از array_merge استفاده کردم ولی وقتی یکی از آرایه ها خالی باشه warning میده چون میخوام چند تا ارور که از توابع مختلف میاد رو جمع کنم و با هم نشون بدم ممکنه یکی از اونها خالی باشه تابعی هست که دو آرایه رو جمع کنه اگه یکی از اونها خالی بود ارور نده با تشکر تو اینترنتم گشتم چیزی پیدا نکردم البته با دستور if میشه حلش کرد
سلام. بهتره از همان if استفاده کنید
سلام حسن جان با array_push و استفاده از foreach ارورها رو به یک آرایه انتقال دادم سپاس