همانطور که میدانید متغیرها یک مقدار خاص را برای ما ذخیره می کنند تا بعدا بتوانیم از آن استفاده کنیم. آرایه ها در php نیز نوع خاصی از متغیرها هستند که به جای یک مقدار چندین مقدار را در خود ذخیره می کنند. به مثال زیر توجه کنید:
<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?> </body> </html>
خروجی این کد عبارت I like Volvo, BMW and Toyota خواهد بود. در واقع اگر بخواهیم لیست ماشین ها در کد بالا را به صورت عادی در متغیرها قرار دهیم باید بگوییم:
$cars1 = "Volvo"; $cars2 = "BMW"; $cars3 = "Toyota";
شاید بگویید نوشتن این کد آنقدرها هم سخت نیست اما فرض کنید به جای 3 ماشین 300 ماشین داشته باشید! آن وقت چطور؟ اگر بخواهیم بین این ماشین ها بگردیم و ماشین خاصی را پیدا کنیم چطور؟ احتمالا متوجه شده اید که چرا به آرایه ها نیاز داریم.
برای ایجاد آرایه ها در زبان PHP راه های مختلفی وجود دارد. یکی از آن ها استفاده از تابع ()array است. در زبان PHP سه نوع آرایه ی متفاوت داریم:
- indexed array یا آرایه های ایندکس شده
- associative array یا آرایه های متناظر
- Multidimensional array یا آرایه های چند بُعدی
نوع اول: indexed array
index یا اندیس یک آرایه یک عدد مخصوص است. ایندکس آرایه ها را اعدادی پنهان تصور کنید که از صفر شروع شده و تا آخرین عضو آرایه ادامه دارند. برای واضح شدن مطلب یک کتاب را تصور کنید؛ هر کتابی قسمتی به نام فهرست دارد و این فهرست برای هر مبحثی، عددی ارائه می کند که همان شماره ی صفحه است. حالا ایندکس ها در واقع همین شماره ی صفحه برای آرایه ها هستند (یعنی از طریق آن ها به اعضای آرایه دسترسی خواهیم داشت).
برای ساختن آرایه های ایندکس شده دو راه وجود دارد. می توانیم ایندکس (اندیس آرایه) را دست نزنیم تا به صورت خودکار و از صفر تنظیم شود:
$cars = array("Volvo", "BMW", "Toyota");
و یا اینکه ایندکس ها را به صورت دستی تعیین کنیم:
$cars[0] = "Volvo"; $cars[1] = "BMW"; $cars[2] = "Toyota";
در مثال زیر یک آرایه ی ایندکس شده از ماشین ها را داریم که متنی حاوی این ماشین ها را در خروجی به ما نشان می دهد:
<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?> </body> </html>
اگر بخواهید تعداد اعضای یک آرایه ی ایندکس شده را بدانید باید از تابع ()count
استفاده کنید. به این مثال دقت کنید:
<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); echo count($cars); ?> </body> </html>
برای گردش در یک آرایه ی ایندکس شده نیز می توانید از یک حلقه ی for
استفاده کنید:
<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); $arrlength = count($cars); for($x = 0; $x < $arrlength; $x++) { echo $cars[$x]; echo "<br>"; } ?> </body> </html>
نوع دوم: Associative Array
آرایه های متناظر آرایه هایی هستند که index آنها (یا کلید (key) آنها) به جای عدد نامی است که ما انتخاب کرده باشیم. دو راه برای ساخت این نوع از آرایه ها وجود دارد؛ راه اول به شکل زیر است:
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
و راه دوم به این شکل:
$age['Peter'] = "35"; $age['Ben'] = "37"; $age['Joe'] = "43";
تفاوتی بین این روش ها وجود ندارد و شما می توانید از هر کدام که خواستید استفاده کنید.
حالا می توانید از این کلیدهای اسمی برای دسترسی به اعضای آرایه استفاده کنید:
<!DOCTYPE html> <html> <body> <?php $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?> </body> </html>
برای گردش در یک آرایه ی متناظر و مثلا نمایش تمام اعضای آن می توان از یک حلقه ی foreach
استفاده کرد:
<!DOCTYPE html> <html> <body> <?php $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); foreach($age as $x => $x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?> </body> </html>
نوع سوم: Multidimensional Array
آرایه های چند بُعدی، آرایه هایی هستند که یک یا چند آرایه را در خود داشته باشند. زبان PHP می تواند آرایه های دو بعدی، سه بعدی، چهار بعدی، پنج بعدی و … را بدون هیچ مشکلی ایجاد کند اما کار و مدیریت چنین آرایه هایی (آرایه های بیشتر از 3 بعد) برای اکثر افراد کار سختی به حساب می آید بنابراین بهتر است از 4 بعد و بالاتر دوری کنید.
به طور مثال به آرایه ی دو بعدی زیر توجه کنید:
$cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) );
برای دسترسی به اعضای این آرایه به دو عدد ایندکس نیاز داریم! به این مثال توجه کنید:
<!DOCTYPE html> <html> <body> <?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>"; echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>"; echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>"; echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>"; ?> </body> </html>
همچنین برای گردش در این آرایه ها می توان یک حقله ی for
را درون یک حلقه ی for
دیگر قرار داد:
<!DOCTYPE html> <html> <body> <?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); for ($row = 0; $row < 4; $row++) { echo "<p><b>Row number $row</b></p>"; echo "<ul>"; for ($col = 0; $col < 3; $col++) { echo "<li>".$cars[$row][$col]."</li>"; } echo "</ul>"; } ?> </body> </html>
کار با آرایه ها اصلا مبحث دشواری نیست و مطمئن هستم که همه ی شما مطلب را به خوبی درک کرده اید. امیدوارم از این قسمت لذت برده باشید.