
به کمک آرایه ها میتوان مقادیر زیادی را در یک متغیر نگهداری کرد. کسب مهارت در کار با آرایهها در برنامه نویسی، توانایی و کیفیت کار ما را افزایش میدهد. در این آموزش با انواع آرایه و نحوه کار با آرایه در PHP آشنا میشویم.
فرض کنید میخواهیم اسم سه نفر را ذخیره و از آنها استفاده کنیم. میتوان بهراحتی با تعریف سه متغیر از نوع رشتهای، این اسامی را ذخیره و با آنها کار کرد. اما اگر این تعداد به صد یا هزار اسم برسد، کار کردن با تعداد زیادی متغیر، سخت و طاقتفرسا خواهد شد. اینجاست که آرایهها به کمک ما میآیند.
فهرست محتوای آموزش
آرایه چیست و در PHP چه کاربردی دارد ؟
همانطور که احتمالاً تا کنون متوجه شدید، آرایه یک متغیر (متغیر در PHP) با امکان ذخیرهسازی چندین مقدار است. اندازه آرایه میتواند متفاوت باشد و بسته به نیاز ما تغییر کند. در زبان برنامه نویسی PHP نوع دادهایِ عناصر هر آرایه میتوانند با هم یکسان بوده یا متفاوت باشد.
هنگام برنامهنویسی، ممکن است بارها از آرایهها کمک بگیریم. در حالت کلی میتوان اکثر کاربردها را در سه دسته زیر قرار داد.
- ذخیره سازی موقت چند داده
- محاسبات مختلف روی دادههای گروهی (مثلاً مرتبسازی آرایه یا حذف عناصر تکراری)
- کار با فیلدهای چندگانه (Multiple) ارسال شده از سمت کاربر توسط PHP
ساخت آرایه در PHP
در زبان PHP به کمک تابع array()
میتوان یک آرایه ایجاد کرد.
$test_array = array();
تابع array()
میتواند ورودی نیز داشته باشد. با مشخص کردن ورودی، مقادیر تعریف شده، به عنوان اولین عناصر آرایه در آن قرار میگیرند. در ادامه نحوه تعریف انواع آرایه را بررسی میکنیم.
علاوه بر تابع array، میتوانیم از []
برای تعریف یک آرایه و اعضای آن استفاده کنیم:
$names = ['omid', 'ghazal', 'ehsan', 'negar']

انواع آرایه در PHP
در حالت کلی شاید بتوان گفت، آرایه فقط یک نوع دارد! اما با توجه به ویژگیها و کاربرهای مختلف، اکثراً آرایه در PHP را به سه نوع تقسیمبندی میکنند.
1- آرایه فهرستی (آرایه عددی)
آرایه عددی (یا Numeric) که به آرایه فهرستی (یا Indexed) نیز معروف است سادهترین نوع آرایه است. این نوع آرایهها فقط شامل عناصر هستند.
آرایه زیر یک نوع آرایه عددی در PHP است. در این آرایه نام سه فرد را نگهداری میکنیم.
<?php
$persons = array("Sara", "Omid", "Sam");
?>
به هر کدام از عناصر موجود در آرایه یک عدد نسبت داده میشود. این عدد مشخصکننده موقعیت و جایگاه عنصر در کل آرایه است. شمارهگذاری از عدد صفر شروع شده و تا اندازه آرایه منهای یک ادامه پیدا میکند.
به کمک علامت []
در جلوی نام آرایه، میتوان به تک تک عناصر دست یافت.
<?php
echo $person[1];
// Omid
?>
همانطور که میبینید خروجی قطعه کد بالا، عنصر دوم (با ایندکس 1) در آرایه است.
حالت دوم تعریف آرایه عددی
میتوان مقادیر مورد نظر را پس از ایجاد آرایه نیز مشخص کرد. برای این کار، مقدار مورد نظر را در ایندکس دلخواه قرار میدهیم:
<?php
$persons_new = array();
$persons_new[0] = "Sara";
$persons_new[1] = "Omid";
?>
در بخش کار با آرایه یاد میگیریم با تابع array_push()
اعضای جدید را بدون داشتن آخرین اندیس به آرایه اضافه کنیم.
2- آرایه انجمنی (کلید و مقدار)
آرایههای انجمنی بسیار شبیه به آرایههای عددی هستند. با این تفاوت که به جای ایندکسِ عددی، یک کلید (از نوع رشته PHP) تعریف میشود.
در آرایه انجمنی (Associative Array) هر مقدار دارای یک کلید است. این کلید توسط ما ایجاد شده و برای هر عنصر از آرایه یکتاست. برای دسترسی به عناصر آرایه انجمنی، در هنگام صدا زدن آرایه، در داخل []
مقدار کلید را قرار میدهیم.
مثال: فرض کنید میخواهیم در یک آرایه سن افراد مختلف را ذخیره کنیم. مقادیر ما سن هر فرد و کلیدها نام افراد است. در نتیجه آرایهای مشابه زیر خواهیم داشت:
$ages = array( "sara" => 20, "omid" => 24, "sam" => 23 );
حال برای دسترسی به سن سارا، کافی است آرایه را به شکل زیر صدا بزنیم:
echo $ages["sara"];
مشابه آرایههای عددی، میتوان عناصر دیگر این آرایه را به صورت زیر نیز تعریف کرد:
$ages["nazanin"] = 17;
به دلیل اینکه در آرایههای Associative به هر مقدار یک کلید نسبت میدهیم، به این آرایهها، آرایههای کلید-مقدار (Key-Value) نیز گفته میشود.
3- آرایه چند بعدی (ماتریس)
آرایههای چند بعدی، تفاوت خاصی با دو نوع قبلی نداند. در آرایه دو بعدی مقدار عناصر ما خودشان یک آرایه هستند. این وضعیت میتواند به صورت تودرتو برای آرایههای سهبعدی، چهاربعدی و … تکرار شود.
فرض کنید میخواهیم آرایهای داشته باشیم که اطلاعات افراد مختلف را در خود نگهداری کند. این آرایه میتواند یک آرایه دوبعدی باشد.
هر عنصر از آرایه اصلی، یک آرایه است که اطلاعات یکی از افراد در آن قرار گرفته است. آرایهی چند بعدی زیر، نام و سن ۳ نفر را نگهداری میکند.
<?php
// Define Multidimensional Array:
$users = array(
array(
"name" => "Sara",
"age" => 20,
"email" => "sara@domain.com",
),
array(
"name" => "Omid",
"age" => 24,
"email" => "omid@domain.com",
),
array(
"name" => "Sam",
"age" => 23,
"email" => "sam@domain.com",
)
);
?>
آرایه های PHP که به صورت چندبعدی تعریف میشوند میتوانند عددی، انجمنی یا ترکیبی از اینها باشند..
کار با آرایه در PHP
تا اینجا توانستیم آرایههای مختلفی ایجاد کرده و مقادیر آنها را بخوانیم. در ادامه به بررسی روشها و ترفندهای کار با آرایه میپردازم. با این روشها میتوانیم بر روی آرایهها تغییراتی اعمال کرده و با آنها کار کنیم.
افزودن عضو جدید به آرایه PHP
برای افزودن یک یا چند عنصر جدید به آرایه، میتوان از تابع array_push()
استفاده کرد. این تابع حداقل دو ورودی لازم دارد.
- ورودی اول متغیری است که آرایه را مشخص میکند.
- ورودی دوم به بعد، عناصر جدید ما هستند.
بنابراین میتوانیم به هر تعداد که لازم داریم، عضو جدید به آرایه اضافه کنیم.
<?php
$names = array( "Sara", "Omid" );
array_push( $names, "Sam", "Nazanin" );
// Array( [0]=> Sara [1]=> Omid [2]=> Sam [3]=> Nazanin )
?>
اگر آرایه ورودی از نوع انجمنی باشد، اعضای جدید با اندیس عددی به آرایه اضافه خواهند شد. اگر از قبل کلید عددی داشته باشیم، اندیس جدید از آخرین مقدار شروع میشود وگرنه با اندیس 0 تعریف میشود.
چاپ آرایه در php
در خروجی برنامه و یا هنگام تست کردن آن، بارها نیاز داریم تا مقادیر یک آرایه را در خروجی چاپ کرده و ببینیم. با استفاده از حلقهها (که در ادامه بررسی میکنیم) و دستورِ دوستداشتنی echo
میتوان مقادیر درون یک آرایه را چاپ کرد. (با echo و print در PHP بیشتر آشنا شوید!)
اما نوشتن حلقههای مختلف برای بررسی محتویات چند آرایه شاید کار راحتی نباشد. در اینجا دو تابع برای چاپ عناصر آرایه معرفی میکنیم.
تابع اول: تابع print_r
تابع print_r()
آرایه را گرفته و تمام مقادیر به همراه ایندکسها (یا کلیدها) را چاپ میکند.
$arr = array( "sara", "omid", "sam" );
print_r( $arr );
// Array( [0]=>sara [1]=>omid [2]=>sara )
اگر میخواهید خروجی زیباتری داشته باشید، میتوانید قبل و بعد از خروجی این تابع، یک تگ <pre>
قرار دهید. با این کار فواصل ایجاد شده، در صفحه HTML نیز نمایش داده میشود.
<?php
$arr = array( "sara", "omid", "sam" );
echo "<pre>";
print_r( $arr );
echo "</pre>";
?>
خروجی این کد چیزی شبیه به تصویر زیر خواهد شد:

تابع دوم: تابع var_dump
تابع var_dump()
آرایه را بهعنوان ورودی گرفته و از نظر ظاهری چیزی شبیه به تابع اول چاپ میکند. با این تفاوت که نوع دادهای هر کدام از عناصر را نیز مشخص میکند.
<?php
$arr = array( "sara", "omid", "sam" );
echo "<pre>";
var_dump( $arr );
echo "</pre>";
?>
خروجی کد بالا چیزی شبیه زیر میشود:

جایگزین کردن مقدار جدید در آرایه
گاهی اوقات نیاز داریم مقدار یک عنصر از آرایه را بازنویسی (overwrite) یا با مقدار جدیدی عوض کنیم.
برای این کار میتوان دقیقاً مشابه با تعریف یک مقدار برای یک خانه از آرایه عمل کرد. به این صورت که با فراخوانی عنصر مورد نظر، مقدار دلخواه را در آن میریزیم. برای درک بهتر، به قطعه کد زیر توجه کنید.
<?php
// Changing an Array Element:
$arr = array( "Red", "Yellow", "Green" );
$arr[1] = "Blue";
// new array:
// array( "Red", "Blue", "Green" )
?>
در اینجا مقدار دومین عضوِ آرایه را از Yellow به Blue تغییر دادیم.
این مسئله در آپدیت آرایههای انجمنی بیشتر اتفاق میافتد.
استفاده از آرایه در حلقه
در جلسه کار با حلقه در PHP مفصل در مورد حلقهها صحبت میکنیم. اگر در حال یادگیری PHP گامبهگام هستید، میتوانید این بخش را صرفاً مرور کنید. در جلسه حلقهها در موردش بیشتر صحبت میکنم.
در PHP یک حلقه مخصوص آرایهها به نام foreach
داریم. با این تابع میتوان روی هر نوع آرایهای حرکت کرد.
اگر صرفاً آرایه عددی داشته باشیم، میتوان به کمک یک حلقه ساده for
، اندیسها را افزایش داده و به تک تک عناصر دسترس داشت. ما در اینجا صرفاً حلقه foreach()
را بررسی میکنیم.
اگر آرایه $persons
یک آرایه عددی باشد، برای دسترسی به عناصر آن به صورت زیر عمل میکنیم.
<?php
foreach( $persons as $name ){
echo $name . "<br>"
}
?>
درصورتیکه با آرایه $ages
که یک آرایه انجمنی است، به صورت قبل عمل کنیم، صرفاً سن افراد (مقادیر آرایه یا valueها) را خواهیم داشت.
اگر اسم هر فرد (کلیدهای آرایه) را نیز بخواهیم، میتوانیم مشابه قطعه کد زیر عمل کنیم:
<?php
foreach( $ages as $name => $age ){
echo "Age of" . $name . "is: " . $age . "<br>";
}
?>
توابع آرایه در پی اچ پی
برای کار با آرایهها در زبان PHP توابع مختلفی وجود دارد. دو مورد از پرکاربردترین توابع را در ادامه بررسی میکنیم.
محاسبه اندازه آرایه در PHP
تابع count()
آرایه را گرفته و اندازه آن را به ما میدهد. منظور از اندازه آرایه، تعداد عناصر موجود در آرایه است.
<?php
$test = array( 5, 7, 11, 6, 14, 25 );
echo count( $test ); // 6
?>
درصورتیکه یک آرایه چند بعدی داشته باشیم، تعداد عناصر (آرایههای) سطح اول را شمرده و برمیگرداند.
بررسی آرایه بودن یک متغیر
گاهی اوقات در یک برنامه نیاز داریم نوعِ متغیر را بررسی کرده و در صورت آرایه بودن ادامه دهیم. به کمک تابع is_array()
میتوان این کار را انجام داد. این کار باعث جلوگیری از برخی خطاهای ناخواسته میشود.
تابع is_array()
یک متغیر بهعنوان ورودی گرفته و نتیجه را به صورت boolean به دو حالت true یا false بازمیگرداند. از این تابع میتوانیم در ساختار شرط های PHP استفاده کنیم.
<?php
$var = "Test SabzDanesh text!";
$arr = array( "SabzDanesh", "Learning" );
echo is_array( $var ); // false
echo is_array( $arr ); // true
?>
آرایهها را میتوان با روشهای مختلف مرتب کرد. برای آشنایی با چگونگی مرتبسازی آرایهها در PHP به آموزش زیر مراجعه کنید.
جمع بندی: آرایه در PHP
در این آموزش با آرایهها در PHP آشنا شدیم. از آرایهها برای ذخیرهسازی تعداد زیادی مقدار در یک متغیر استفاده میشود.
دو نوع آرایه عددی و آرایه انجمنی وجود دارد که از هر کدام متناسب با نیازمان استفاده میکنیم. اولی، دارای اندیسهای عددی و دومی با اندیسهای رشتهای (کلید) تعریف میشود. اگر از آرایهها به صورت تودرتو استفاده کنیم، یک ساختار چندبعدی یا ماتریسی داریم.
علاوه بر مرور چند ترفند در کار با آرایه، دیدیم که میتوانیم مقادیر آرایه را بازنویسی کرده و تغییر دهیم. مقادیر جدیدی را با array_push()
به آرایه اضافه کنیم. با is_array()
آرایه بودن یک متغیر را بررسی کرده و از foreach برای دسترسی به همه اعضای آن استفاده کنیم.
آرایهها در PHP بسیار گسترده و البته پر کاربرد هستند. مثلاً اکثر اطلاعاتی که از دیتابیس PHP میگیریم، یک آرایه هستند. میتوانید کاربردهای خاص آن را در مثالهای صفحه مستنداتش ببینید. اگر سؤال یا تجربهای دارید، بخش دیدگاهها برای شماست.
این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
خیلی مطلب عالی و کاملی بود
خوشحالیم که این آموزش رو کاربردی میدونید. حدود سه هفته دیگه دوره مکمل که رایگانم هست روی سایت منتشر میشه. پیشنهاد میکنیم اگه ابتدای مسیر یادگیری هستید حتماً دوباره بهمون سر بزنی پرهام عزیز.
مرسی عالی بود
با سلام آیا آرایه ها در نسخه های متفاوت پی اچ پی متفاوت است؟
چون پی اچ پی پنج رو مطالعه میکنم و در 7 اجرا میکنم دستور
unset()
کار نکرد ؟؟؟سلام
ساختمان دادهها معمولاً در نسخههای مختلف تغییری نمیکنه. اما ممکنه برخی توابع دیگه پشتیبانی نشه!
در مورد دستور unset حذف عنصر از آرایه PHP نباید مشکلی باشه. طبق مستندات در نسخه 7 هم قابل استفاده هست.
سلام برای اینکه بتونیم یه صفحه ای ایجاد منیم با محر تایید هویت په کار کنیم اطلاعات بعد از ارسال به پیج دوم وارد پی میشه
سلام
سوالتون مقداری واضح نیست! اینطور که متوجه شدم میخواهید کاربر فرمی تکمیل کرده و بعد از آن به صفحهای برای پرداخت هدایت شود.
برای این کار نیاز به کار با فرمها برای دریافت اطلاعات دارید. سپس با دستورات header یا سایر روشها کاربر را به صفحه دوم انتقال دهید. در صفحه دوم، ابتدا اطلاعات رو ثبت و بعد به کمک APIهای درگاه پرداخت مورد نظرتون، کاربر رو به درگاه پرداخت هدایت کنید.
موفق باشید.