آشنایی با حلقه foreach در php

تاریخ: 04 فروردین 1400

حلقه foreach برای پیمایش یک آرایه بر اساس المان های آن استفاده می شود. این حلقه فقط روی آرایه ها و آبجکت ها کار می کند.

سینتکس اول foreach بدون کلید المان ها:

foreach (iterable_expression as $value)
    statement

 

سینتکس دوم foreach با کلید المان ها:

foreach (iterable_expression as $key => $value)
    statement

 

مثال: چاپ کردن مقادیر یک آرایه با استفاده از حلقه foreach:

$x = [1,2,3];
foreach($x as $y)
    echo $y; //output: 123

 

همانطور که در آموزش آشنایی با متغیرها در php بیان کردیم، با استفاده از کاراکتر & می توانیم رفرنس آرایه را در حلقه تغییر دهیم:

$x = [1,2,3];
foreach($x as &$y)
    $y++;
print_r($x); //output: Array ( [0] => 2 [1] => 3 [2] => 4 )

 

نکته مهم: رفرنس y$ بعد از حلقه نیز باقی مانده و مقدار دارد. لذا بهتر است بعد از حلقه آن را حذف کنیم:

$x = [1,2,3];
foreach($x as &$y)
    $y++;
print_r($x); //output: Array ( [0] => 2 [1] => 3 [2] => 4 )
unset($y);

 

مثال: چاپ مقادیر آرایه ها و کلید یک آرایه انجمنی:

$x = [ 'one' => 1, 'two' => 2 ];
$count = count($x);
$i = 0;
foreach($x as $key => $value) {
    echo $key . ' = ' . $value;
    if( $i < $count-1 ) echo ' & ';
    $i++;
}
//output: one = 1 & two = 2

 

مثال: چاپ آرایه درونی یک آرایه چندبعدی:

$x = [ 'one' => 1, 'two' => [1,2,3] ];
foreach($x['two'] as $value)
    echo $value;
//output: 123

 

با استفاده از متد list می توانیم خیلی راحت تر با آرایه های چند بعدی کار کنیم:

$array = [
    [1, 2],
    [3, 4],
];
foreach ($array as list($a, $b))
    echo "A: $a; B: $b\n";

 

اگر آرایه چند بعدی ما دارای آرایه های تو در توی دیگر باشد، می توانیم از تابع list تو در تو استفاده کنیم:

$array = [
    [1, 2, [3, 4]],
    [3, 4, [5, 6]],
];
foreach ($array as list($a, $b, list($c, $d)))
    echo "A: $a; B: $b; C: $c; D: $d;";

 

در مثال بالا، مقادیر a و b به المان های اول و دوم آرایه های درونی اشاره دارند. پس با استفاده از این تابع می توانیم به راحتی حلقه foreach را درون آرایه های چندبعدی ایجاد کنیم. (تعداد مقادیر تابع list اختیاری و بر حسب نیاز است. حداکثر مقدار، برابر طول بزرگترین آرایه است)

 

برای خارج شدن از حلقه foreach، کافیست از دستور break استفاده کنیم:

$array = [1, 2, 3];
foreach ($array as $val) {
    if($val > 1){
        break;
    }
    echo $val;
}
//output: 1

 

روش clone syntax برای حلقه foreach نیز قابل استفاده است:

$array = [1, 2, 3];
foreach ($array as $val) :
    echo $val;
endforeach;
//output: 123

 

 

 

 

 

دیدگاهتان را بنویسید

طراحی افزونه وردپرس