حلقه foreach (Foreach Loop)
وقتی می خواهی روی هر عضو آرایه یا شیء بگردی، «حلقه foreach» عالی است. «آرایه (Array)» یعنی لیست منظم. «شیء (Object)» یعنی موجودی با ویژگی ها.
foreach روی آرایه های اندیسی
در هر دور، مقدار عضو فعلی در یک متغیر می نشیند و چاپ می شود.
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
echo "$x <br>";
}
کلید و مقدار در آرایه های انجمنی
«آرایه انجمنی (Associative)» کلید نام دار دارد. هم کلید را بگیر، هم مقدار را.
$members = array("Peter" => "35", "Ben" => "37", "Joe" => "43");
foreach ($members as $x => $y) {
echo "$x : $y <br>";
}
foreach روی شیءها
می توانی روی ویژگی های شیء هم حلقه بزنی و نام/مقدار را ببینی.
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
}
$myCar = new Car("red", "Volvo");
foreach ($myCar as $x => $y) {
echo "$x: $y <br>";
}
خروج و پرش: break و continue
با «break» حلقه را متوقف کن. با «continue» همین دور را رد کن.
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") {
break;
}
echo "$x <br>";
}
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") {
continue;
}
echo "$x <br>";
}
تغییر مقدار: پیش فرض و با مرجع
پیش فرض، تغییر روی کپی انجام می شود و آرایه اصلی عوض نمی شود.
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") {
$x = "pink";
}
}
var_dump($colors);
اگر «&» بگذاری، با «مرجع (Reference)» کار می کند و اصل آرایه تغییر می کند.
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as &$x) {
if ($x == "blue") {
$x = "pink";
}
}
var_dump($colors);
سینتکس جایگزین: endforeach
برای قالب نویسی تمیز، می توانی از «endforeach» به جای «{ }» استفاده کنی.
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) :
echo "$x <br>";
endforeach;
نکته: با مرجع کار کردی؟ یادت باشد مرجع را بعداً آزاد کنی.
تمرین گام به گام
- یک آرایه ساده بساز و مقدار بده.
- با foreach چاپ کن و خروجی را ببین.
- نسخه مرجعی بساز و یک عضو را تغییر بده.
مطالب مرتبط: حلقه for، حلقه while، و حلقه foreach.
جمع بندی سریع
- foreach برای پیمایش اعضا عالی است.
- روی آرایه و شیء کار می کند.
- break متوقف می کند؛ continue رد می کند.
- & باعث تغییر آرایه اصلی می شود.