همانطور که میدانید متغیرها یک مقدار خاص را برای ما ذخیره می کنند تا بعدا بتوانیم از آن استفاده کنیم. آرایه ها در 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 سه نوع آرایه ی متفاوت داریم:
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>
آرایه های متناظر آرایه هایی هستند که 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>
نکته: حالا که با آرایه ها آشنا شدید ممکن است به اعضا value (مقدار) و به ایندکس ها key (کلید) بگوییم بنابراین اگر عبارت «جفت های key/value» را شنیدید تعجب نکنید.
آرایه های چند بُعدی، آرایه هایی هستند که یک یا چند آرایه را در خود داشته باشند. زبان 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>
نکته: پردازش آرایه های چند بعدی برای سرور شما هزینه بر تر بوده و مدیریت آن ها نیز سخت تر است بنابراین فقط و فقط هنگام نیاز از آن ها استفاده کنید.
کار با آرایه ها اصلا مبحث دشواری نیست و مطمئن هستم که همه ی شما مطلب را به خوبی درک کرده اید. امیدوارم از این قسمت لذت برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.