در این قسمت با آرایه ها و حلقه ها در زبان برنامه نویسی PHP آشنا می‌شوید.

آشنایی با آرایه‌ها در PHP

آرایه‌ها در تمام زبان‌های برنامه نویسی وجود دارند و نقش مهمی در برنامه‌ها ایفا می‌کنند.

آرایه‌ها برای سازماندهی داده‌ها به صورت منظم و مرتب کاربرد دارند و به دو نوع آرایه یک بعدی و چند بعدی تشکیل می‌شوند.

ماتریس‌ها و آرایه‌ها در PHP

آرایه‌ها در واقع همان ماتریس‌ها هستند که در این قسمت قصد داریم روش پیاده سازی ماتریس‌ها یا همان آرایه‌ها را به شما آموزش بدهیم.

در قسمت پنجم چند نوع داده را با هم معرفی کردیم، برای تعریف آرایه‌ها باید نوع داده آرایه را استفاده کنید. سورس زیر را ببینید:

$array_variable= array('one', 'two', 'three', 'foure', 'five');

در بالا یک مثال از آرایه یک بعدی با پنج آیتم می‌بینید. برای چاپ آرایه فوق از دستور var_dump($array_variable) استفاده کنید.

توجه کنید که هر عنصر از آرایه از صفر به بالا شماره گذاری یا به اصطلاح اندیس گذاری می‌شود. برای فراخوانی یک آیتم از اندیس آن آیتم داخل آکولاد استفاده می‌کنیم.

echo $array_variable[0];

توجه کنید که کل آرایه را نمی‌توان با دستور echo چاپ کرد، و فقط می‌توان عناصر خاصی از یک آرایه را با echo نمایش داد. نتیجه اجرای کد فوق عبارت one خواهد بود.

برای تغییر یک آیتم نیز مانند زیر عمل می‌کنیم:

$array_variable[0]= 'six';

اگر آرایه را با دستور var_dump($array_variable) چاپ کنید خواهید دید عنصر اول از one به six تغییر پیدا کرده است.

برای اضافه کردن عنصر جدید به آرایه می‌توانید یک اندیس جدید را مقدار دهی کنید. مثلا آرایه فوق از 0 تا 4 اندیس گذاری شده اند بنابراین داریم:

<?php
$array_variable= array('one', 'two', 'three', 'foure', 'five');
$array_variable[5]= 'six';
var_dump($array_variable);
?>

آرایه‌های چند بعدی در PHP

کل مثال‌های ذکر شده در بالا متعلق به آرایه‌های تک بعدی بودند. ولی همان طور که در اول این آموزش نیز گفتیم، آرایه‌ها می‌توانند چند بعدی باشند. آرایه‌های چند بعدی در واقع آرایه‌ای از آرایه‌ها هستند. مانند:

<?php
$array_variable= array(array('apple', 'banana'), array('green', 'blue'));
var_dump($array_variable);
?>

نتیجه اجرای کد بالا مانند زیر خواهد بود:

array (size=2)
  0 => 
    array (size=2)
      0 => string 'apple' (length=5)
      1 => string 'banana' (length=6)
  1 => 
    array (size=2)
      0 => string 'green' (length=5)
      1 => string 'blue' (length=4)

در سطر اول مشخص می‌شود که این آرایه size‌ای برابر دو دارد و دو بعدی است. در سطر دوم آرایه صفرم شروع شده و آیتم‌ها ذکر می‌شوند. در سطر ششم آرایه یکم شروع می‌شود.

برای چاپ رنگ green این گونه اندیس آرایه را وارد می‌کنیم:

echo $array_variable[1][0];

در بالا در آکولاد اول شماره آرایه و در شماره دوم شماره آیتم را وارد می‌کنیم.

در مثال پایین قصد داریم یک آرایه جدید به آرایه دو بعدی اضافه کنیم:

<?php
$array_variable= array(array('apple', 'banana'), array('green', 'blue'));
$array_variable[2]= array('pen', 'pencil');
var_dump($array_variable); die();
?>

در این جا نیز آرایه‌ها به ترتیب از صفر شماره گذاری می‌شوند. چون در ابتدا تنها دو آرایه داشتیم پس برای اضافه کردن آرایه جدید از اندیس 2 استفاده می‌کنیم.

نتیجه اجرای کد فوق را در زیر خواهید دید:

array (size=3)
  0 => 
    array (size=2)
      0 => string 'apple' (length=5)
      1 => string 'banana' (length=6)
  1 => 
    array (size=2)
      0 => string 'green' (length=5)
      1 => string 'blue' (length=4)
  2 => 
    array (size=2)
      0 => string 'pen' (length=3)
      1 => string 'pencil' (length=6)

Json و آرایه ها

آرایه‌هایی که در بالا ایجاد کردیم فقط حین اجرای برنامه تولید می‌شوند و نمی‌توان آن‌ها را ذخیره و بعدها دوباره مورد استفاده قرار داد. یکی از روش‌های ذخیره آرایه‌ها تبدیل آن‌ها به ساختار Json است.

مثال زیر را با هم بررسی می‌کنیم:

<?php
$array_variable= array(array('apple', 'banana'), array('green', 'blue'));
echo json_encode($array_variable);
?>

خروجی کدهای بالا به شکل زیر است:

[["apple","banana"],["green","blue"]]

همانطور که می‌بینید آرایه دو بعدی ما تبدیل به یک رشته متنی مانند فوق شده است.

حال مثال زیر را ببینید:

<?php
$json= '[["apple","banana"],["green","blue"]]';
$array_variable= json_decode($json);
var_dump($array_variable);
?>

اگر در مرورگر نتایج فوق را اجرا کنید خواهید دید به سادگی رشته Json تبدیل به یک آرایه می‌شود.

Json کجا کاربرد دارد؟

Json بسیار جدی است و در تمام زبان‌های برنامه نویسی پیشرفته کاربرد دارد. فرض کنید سیستمی را با php پیاده سازی کرده اید و می‌خواهید یک سری اطلاعات را با سیستمی دیگر که به زبان Java نوشته شده است رد و بدل کنید. شاید بهترین راه کار رد و بدل کردن اطلاعات در قالب Json است.

تمام زبان‌های برنامه نویسی آرایه‌ها را به یک فرم به Json تبدیل می‌کنند بنابراین در هر جایی می‌توان از Json استفاده کرد.

آرایه با اندیس دلخواه

در مثال‌های فوق دیدیم اندیس آرایه‌ها از صفر شروع شده و یکی یکی اندیس‌ها بالا می‌روند. می‌توان اندیس‌ها را با روش زیر به صورت دلخواه تعیین کرد:

$array_variable= array('one' => 'apple', 'two' => 'banana', 'three' => 'orange', 'four' => 'mango', 'five' => 'blueberry');

حال برای دسترسی به apple به شکل زیر عمل می‌کنیم:

$array_variable= array('one' => 'apple', 'two' => 'banana', 'three' => 'orange', 'four' => 'mango', 'five' => 'blueberry');
echo $array_variable['one'];

خروجی کد فوق apple است.

حلقه‌ها در برنامه نویسی PHP

حلقه‌ها زمانی کاربرد پیدا می‌کنند که بخواهید عمل معینی را تکرار کنید. تعداد تکرار‌ها می‌توانند مشخص و به تعداد خاص و یا بر اساس یک شرط مشخص باشند. انواع حلقه‌ها در PHP به شرح زیر هستند:

  • حلقه For: برای تکرار به تعداد معین.
  • حلقه while: تکرار تا زمانی که شرط معینی بر قرار باشد.
  • حلقه do while: تکرار تا زمانی که شرط معینی بر قرار باشد.
  • حلقه foreach: تکرار به میزان عناصر داده شده به حلقه.

حلقه For: همانطور که گفته شد این حلقه برای تکرار به تعداد معین کاربرد دارد. مثلا فرض کنید می‌خواهیم با استفاده از for از یک تا 10 را چاپ کنیم:

<?php
for ($i=1; $i < 11; $i++) { 
    echo $i."<br>";
}
?>

در سطر دوم کد بالا حلقه for با استفاده از متغیر $i از یک تا ده در خروجی چاپ می‌شود. همانطور که می‌بینید حلقه for سه ورودی دارد. ورودی اول $i=1 نشان دهنده گام اول حلقه است. ورودی $i < 11 نشان دهنده اجرای حلقه تا زمان برقراری این شرط، و $i++ نشان دهنده گام‌های پیشرفت متغیر $i است.

نکته: دستور $i++ به معنای اضافه کردن یک واحد به متغیر $i و دستور $i-- به معنای کاهش یک واحد از متغیر $i است.

حلقه while: حلقه while درون حلقه کروشه را تا زمانی که شرط معینی برقرار باشد اجرا می‌کند:

<?php
$i=1;
while($i < 11){
    echo $i.'<br>';
    $i++;
}
?>

در سطر دوم متغیر $i را مقدار دهی کردیم، در سطر سوم در پرانتز مقابل while یک شرط قرار دادیم و با این شرط دستورات درون حلقه while تا وقتی که $i کوچکتر از 11 باشد اجرا می‌شود.

در خط چهارم شماره چاپ شده و با <br> به سطر دوم می‌رویم. خط پنجم نیز متغیر $i را یک واحد افزایش می‌دهد.

حلقه do while: ساختاری مشابه while تنها دارد با این تفاوت که شرط حلقه در انتها چک می‌شود:

<?php
$i=1;
do{
    echo $i.'<br>';
    $i++;
}while($i < 11);
?>

در خط دوم متغیر $i را مقدار دهی کردیم. در خط سوم اجرای دستورات اجرا می‌شود. خط چهارم مقدار متغیر $i را چاپ کرده و با <br> به سطر بعدی می‌رود. خط پنجم متغیر $i را یک واحد بیشتر کرده و در سطر ششم شرط $i کوچکتر از 11 را بررسی می‌کند.

حلقه foreach: این حلقه پرکاربرد ترین نوع حلقه هاست و تمام اعضای یک آرایه را چاپ می‌کند. در زیر یک آرایه به foreach داده و سعی می‌کنیم مقادیر موجود در آن را چاپ کنیم:

<?php
$array_items= array('one', 'two', 'three', 'four', 'five');
foreach ($array_items as $value) {
    echo $value."<br>";
}
?>

در سطر دو یک آرایه با نام $array_items ایجاد و مقدار دهی کردیم. در سطر سوم با استفاده از foreach قصد داریم تمام آیتم‌های این آرایه را چاپ کنیم. درون پرانتز ابتدا نام متغیر آرایه را گذاشته و پس از as یک متغیر کلیدی برای چاپ هر آیتم تعریف می‌کنیم که در این جا از value استفاده کردیم.

در خط چهارم با استفاده از متغیر کلیدی تعریف شده در سطر سوم شروع به چاپ آیتم‌ها کرده و با <br> به سطر بعدی می‌رویم.

البته از foreach می‌توان برای چاپ اندیس‌ها نیز استفاده کرد. مثال زیر را ببینید:

<?php
$array_items= array('one' => 'apple', 'two' => 'banana', 'three' => 'orange', 'four' => 'mango', 'five' => 'blueberry');
foreach ($array_items as $key => $value) {
   echo $key.": ".$value."<br>";
}
?>

در سطر دوم یک آرایه با اندیس دلخواه تعریف کردیم.

در سطر سوم ساختار foreach به شکلی که می‌بینید ویرایش شد. در خط چهارم نیز اندیس‌ها با استفاده از $key و مقادیر با $value چاپ می‌شود. خروجی به شکل زیر است:

one: apple
two: banana
three: orange
four: mango
five: blueberry

امیدوارم این قسمت را به خوبی تمرین کرده و اگر سوالی داشتید در بخش نظرات با ما در میان بگذارید.