در ادامه سری آموزشهای پیاچپی امروز قصد داریم تا به مبحث مهم آرایهها بپردازیم. آرایه در زبان ساده محلی است که میتوان در آن بیش از یک مقدار را ذخیرهسازی کرد. در ادامه مطلب با ما همراه باشید.
در جلسات گذشته آموزشهای ابتدایی زبان برنامهنویسی پیاچپی را با هم گذراندیم. حالا میخواهیم در این جلسه به آرایهها بپردازیم.
آرایهها در پیاچپی
اگر خاطرتان باشد در جلسات قبل به صورت مفصل در مورد متغیرها در پیاچپی با شما صحبت کردیم و انواع آن را نیز موردبررسی قرار دادیم. متغیرها میتوانند یک مقدار را برای ما نگهداری کنند و در مواقع نیاز میتوان به آن مقدار دسترسی داشت. اما این روش برای ذخیرهسازی اطلاعات همیشه کاربردی نیست و فرض کنید تعداد زیادی داده از یک نوع خاص را بخواهیم ذخیره کنیم. در چنین شرایطی طبیعا معرفی و استفاده چند متغیر کاربردی به نظر نمیآید. اینجاست که آرایهها وارد عمل میشوند.
آرایه به زبان ساده همان متغیر است با این تفاوت که میتوان بیش از یک مقدار را در آن قرار داد. (حتی میتوان از آرایههای سهبعدی استفاده کرد که فعلا کاری با آنها نداریم و فعلا آرایههای معمولی را موردبررسی قرار خواهیم داد.)
آرایههای خطی (دوبعدی)
خب برای معرفی و استفاده از آرایهها همانند متغیرها یک علامت $ را تایپ کرده و نام موردنظر را برای آرایه انتخاب میکنیم. سپس علامت = را قرار داده و با عبارت کلیدی Array اقدام به ذخیرهسازی دادهها در آن آرایه میکنیم. به مثال زیر توجه کنید:
<?php
$names = Array(“mehrastan”,”weblog”,”university”);
?>
همانطور که در کد بالا میبینید ما سه مقدار weblog ،mehrastan، و university را در آرایهای به نام names ذخیره کردیم. اما چگونه میتوان به مقدار موردنظر دسترسی داشت؟ فرض کنید در اسکریپت موردنظرتان نیاز دارید تا به داده دوم یعنی weblog دسترسی داشته باشید. برای اینکار باید از ایندکسگذاری آرایهها استفاده کنیم. دقت کنید در آرایهها شماره هر داده با یک عدد منحصر به فرد که از ۰ شروع شده و یک واحد یک واحد به این مقدار اضافه میشود. مثلا برای آرایه بالا ایندکس دادهها به ترتیب از چپ به راست برابر با ۰ سپس ۱ و بعد از آن ۲ خواهد بود. نکته مهم اینجاست که شمارهگذاری (ایندکس) دادهها در آرایهها در تمام زبانهای برنامهنویسی به همین شکل است و از عدد صفر شروع میشود. بنابراین طبیعی است که برای آرایه فوق که شامل ۳ عضو است این مقادیر ۰ و ۱ و ۲ باشند. با توجه به توضیح بالا برای دسترسی به مقدار weblog باید از کد زیر استفاده کنیم:
<?php
$names = Array(“mehrastan”,”weblog”,”university”);
//access and echo weblog from above array
echo $names[1]; //this will print : weblog
?>
همانطور که میبینید با قرار دادن شماره ایندکس عضو موردنظر در داخل [] و پس از نام آرایه میتوانید به عضو موردنظر دسترسی داشته باشید. اما حال فرض کنید شرایطی پیش میآید که شما باید خودتان شمارهگذاری ایندکسها را به دست بگیرید. اینکار در پیاچپی به راحتی آب خوردن است! به کد زیر دقت کنید:
<?php
$user_details = Array(“name” => “mojtaba”, “age” => “25”, “fav” => “php”);
?>
همانطور که در کد بالا میبینید ما در آرایهای به نام user_details یکسری از مشخصات کاربر را ذخیره کرده و برای هر داده یک ایندکس اختصاصی در نظر گرفتیم. در این شرایط باز هم البته میتوانید از روش قبلی بهره ببرید و به عنوان مثال برای دسترسی به مقدار نام از ایندکس شماره صفر استفاده کنید. اما در آرایه بالا ما سه مشخصه نام، سن و علاقه را در یک آرایه قرار داده و برای هر کدام از این دادهها یک ایندکس دلخواه تعریف کردیم که در مثال بالا این ایندکسها به ترتیب: name سپس age و در آخر fav هستند. حالا برای دسترسی به مقدار age کافیاست از کد زیر استفاده کنید:
<?php
$user_details = Array(“name” => “mojtaba”, “age” => “25”, “fav” => “php”);
//access and echo age in user_details
echo $user_details[‘age’]; //this will prints: 25
?>
همانطور که مشاهده میکنید به جای شماره ایندکس داده موردنظر از ایندکس اختصاصی خودمان برای دسترسی به سن کاربر در آرایه فوق بهره گرفتیم. نکته مهم اینجاست که به نحوه نوشتن آرایهها و نیز اختصاص ایندکس دلخواه خیلی دقت کنید تا کد شما به درستی اجرا شود.
روش دیگر
روش دیگر برای اختصاص دادن مقدار به آرایهها به صورت زیر است:
<?php
$user_details[‘name’] = “mojtaba”;
$user_details[‘age’] = 25;
$user_details[‘fav’] = “php”;
echo $user[‘age’]; //this will prints 25
?>
کد بالا و مثال قبل عینا یک نتیجه را در برخواهند داشت و در این مرحله باید آنقدر پیشرفت کرده باشید که کد بالا را خودتان بهراحتی تحلیل کنید. تنها روش در این بخش فرق کرده و نتیجه یکسان است. پیاچپی در اکثر بخشها به همین صورت دست توسعهدهنده را بسیار باز گذاشته و میتوان حتی در مواردی با خلاقیت خود روشهای جدیدی برای استفاده از پیشفرضهای برنامهنویسی بهدست آورد.
آرایههای چندگانه (چند بعدی)
همانطور که گفتیم آرایهها فقط به صورت خطی مورداستفاده قرار نمیگیرند. یکی از بهترین قابلیتهای پیاچپی این است که شما میتوانید آرایههایی با بینهایت بعد ایجاد کنید! خب این یعنی چه؟ بهتر است کار را با یک مثال دیگر ادامه دهیم:
فرض کنید شما دادههای مرتبط با چند کاربر را از بانک داده گرفتهاید و میخواهید آنها را مورداستفاده قرار دهید. در این حالت بهترین کار این است که اطلاعات مرتبط با هر کاربر در یک آرایه مختص به خود او قرار گیرد و بعد از اینکار بهراحتی میتوان به هر مشخصه از هر کاربر دسترسی یافت. استفاده از آرایههای چند بعدی درست شبیه آرایههای دوبعدی است و فقط کمی مراحل در اینجا بیشتر خواهد شد.
<?php
$users = Array (“user1” => array (“name” => “mojtaba”, “fav” => “php”), “user2” => array (“naem” => “miaad”, “fav” => “mehrastan”));
?>
همانطور که در کد بالا میبینید اینبار به جای اختصاص دادن یک داده در واقع یک آرایه به هر عضو اختصاص داده شده است. اگر کد بالا کمی شما را سردرگم کرده اصلا جای نگرانی نیست چرا که با چندبار تمرین واقعی و نوشتن کد به شما قول میدهم این مبحث را آنچنان خوب یاد میگیرید که فکرش را هم نمیکنید! پس همین حالا دست بهکار شوید و همزمان با خواندن آموزش کدها را بنویسید.
در کد بالا ما اطلاعات دو کاربر را که برای هر کدام شامل نام و علاقه وی میشود در آرایهای به نام users قرار دادیم. اما برای دسترسی به هر عضو از این آرایه چگونه باید عمل کرد؟ فرض کنید میخواهیم نام کاربر اول را در خروجی چاپ کنیم. در این حالت باید از کد زیر استفاده کنیم:
<?php
$users = Array (“user1” => array (“name” => “mojtaba”, “fav” => “php”), “user2” => array (“naem” => “miaad”, “fav” => “mehrastan”));
echo $users[‘user1’][‘name’]; //this will prints : mojtaba
?>
خب همانطور که دیدید در اینجا کافیاست از دو ایندکس استفاده کنیم. ایندکس اول user1 است که به پیاچپی میگوید در آرایه users به دنبال عضوی به نام user1 هستیم. سپس در ایندکس دوم به پیاچپی میگوییم به دنبال مشخصه name از عضو انتخاب شده هستیم. در اینجا همانطور که در کد هم بهخوبی مشخص شده خروجی mojtaba خواهد بود. مبحث آرایههای چند بعدی همانطور که گفتیم فقط نیاز به تمرین دارد. اگر یادتان باشد در بخش آرایههای خطی مثال آوردیم تحت عنوان روش دیگر برای تمرین شما سعی کنید آن روش را برای آرایههای چندبعدی مثلا برای کد بالا مورداستفاده قرار دهید.
مبحث این جلسه از آموزش PHP نیز در همینجا به پایان میرسد. از جلسه بعد رفته رفته شروع به ساخت اسکریپتهای کاربردی میکنیم و مباحث بیشتری را خواهیم آموخت. پس همچنان پیگیر این سری آموزشی در وبلاگ مهرآستان باشید. در صورتی که سوالی در مورد محتوای این جلسه دارید نیز در بخش دیدگاهها آن را اعلام نمایید.