حلقه foreach

حلقه foreach یکی دیگر از ساختارهای تکرار در PHP می باشد که مخصوصا برای آرایه ها و مجموعه ها طراحی شده است. حلقه foreach با هر بار گردش در بین اجزاء ، مقادیر هر یک از آنها را در داخل یک متغیر موقتی قرار می دهد و شما می توانید بواسطه این متغیر به مقادیر دسترسی پیدا کنید. در زیر نحوه استفاده از حلقه foreach آمده است :

foreach (array as temporaryVar)
{
    code to execute;
}

array نام آرایه است.سپس کلمه کلیدی as و بعد از آن temporaryVar (این نام کاملا اختیاری است) متغیری که مقادیر اجزای آرایه را در خود نگهداری می کند. در زیر نحوه استفاده از حلقه foreach امده است :

  1: <?php
  2: 
  3:    $number = array(1, 2, 3, 4, 5);
  4:    foreach ($number as $tempNumber)
  5:    {
  6:        echo $tempNumber . '<br/>';
  7:    }
  8: 
  9: ?>
1
2
3
4
5

در برنامه آرایه ای با 5 جزء تعریف شده و مقادیر 1 تا 5 در آنها قرار داده شده است (خط 3). در خط 9 حلقه foreach شروع می شود.ما یک متغیر موقتی تعریف کرده ایم که اعداد آرایه را در خود ذخیره می کند. در هر بار تکرار از حلقه foreach متغیر موقتی tempNumber ، مقادیر عددی را از آرایه استخراج می کند. حلقه foreach مقادیر اولین تا آخرین جزء آرایه را در اختیار ما قرار می دهد.

حلقه foreach برای دریافت هر یک از مقادیر آرایه کاربرد دارد. بعد از گرفتن مقدار یکی از اجزای آرایه، مقدار متغیر موقتی را چاپ می کنیم. روش دیگر استفاده از حلقه foreach که معمولا برای آرایه های انجمنی و عددی به کار می رود به صورت زیر می باشد :

foreach (array as $key => $value)
{
   statement
}

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

  1: <?php
  2: 
  3:     $number = array('one' => 'a', 'two' => 'b', 'three' => 'c');
  4:     foreach ($number as $key => $value)
  5:     {
  6:         echo $key. ' => '. $value . '<br/>';    
  7:     }
  8: 
  9: ?>
one => a
two => b
three => c

همانطور که در کد بالا مشاهده می کنید یک آرایه در خط 3 ایجاد کرده ایم که شامل کلید و مقدار است. برای به دست آوردن کلیدها از حالت دوم حلقه foreach استفاده کرده ایم. البته یاد آور می شویم که این روش زمانی مفید است که ما به اندیس ها و یا کلیدها در آرایه نیاز داشته باشیم مثلا در مورد آرایه مثال اول هم می توانیم اندیس اعداد را به این روش به دست بیاوریم :

  1: <?php
  2: 
  3:     $number = array(1, 2, 3, 4, 5);
  4:     foreach ($number as $key => $value)
  5:     {
  6:         echo $key. ' => '. $value . '<br/>';    
  7:     }
  8: 
  9: ?>
0 => 1
1 => 2
2 => 3
3 => 4
4 => 5