ساختار حلقهها در زبان برنامه نویسی پی اچ پی همراه با مثال
مفاهیمی که در این مقاله یاد میگیرید
سینتکس حلقههای پی اچ پی
انواع حلقهها در پی اچ پی
مثال کاربردی از حلقههها در پی اچ پی
حلقه for
یکی از مهمترین حلقههایی که در بسیاری از زبانهای برنامه نویسی وجود دارد حلقه for است که در PHP هم وجود دارد و به ما این امکان را میدهد تا اجرا شدن تعداد دفعات کدهایمان (به هر مقدار دلخواه) را مشروط کنیم به صادق بودن یا نبودن رابطهای خاص، نوع ساختار این دستور در زبان برنامه نویسی PHP مشابه زبان برنامه نویسی C هست، این حلقه از سه بخش اصلی تشکیل شده که در زیر مشاهده میکنید
for(initialization expr; test expr; update expr)
statement
- initialization expr (مقداردهی اولیه یک متغیر)
- test expr (بررسی یک رابطه که اجرای حلقه مشروط به آن است)
- update expr (عملگری که روی متغیر بعد از هر بار اجرای حلقه انجام میشود)
بخش شرطی آن به عنوان یک boolean بررسی میشود در صورتی که شرط مدنظر به عنوان مقدار true ارزیابی شود دستورات شما اجرا میشود در انتهای هر تکرار، بخش update expr اجرا میشود و مجدد شرط بررسی میشود تا زمانی که مقدار شرط برابر true باشد دستورات اجرا میشوند در غیر این صورت اجرای برنامه به خارج از بلوک دستور for هدایت میشود
هر یک از بخشها میتوانند خالی باشند یا حاوی عبارات بیشتری باشند که با ; (سیمیکالن) از هم جدا شدهاند تمام عبارات جدا شده با سیمیکالن مورد ارزیابی قرار میگیرند ولی نتیجه از اخرین بخش گرفتهمیشود خالی بودن قسمت دوم (بخش شرط حلقه) به معنی اجرای نامحدود حلقه است
مثال #۱ نمونههای زیر از حلقه for همه اعداد ۱ تا ۱۰ را نمایش میدهند
<?php
/* example 1 */
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
/* example 2 */
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
/* example 3 */
$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
/* example 4 */
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
مثال #۲ نمونه رایجی که برنامه نویسان از حلقه for استفاده میکنند
<?php
/*
* This is an array with some data we want to modify
* when running through the for loop.
*/
$people = array(
array(‘name’ => ‘Kalle’, ‘salt’ => 856412),
array(‘name’ => ‘Pierre’, ‘salt’ => 215863)
);
for($i = 0; $i < count($people); ++$i) {
$people[$i][‘salt’] = mt_rand(000000, 999999);
}
?>
کد فوق می تواند کند باشد ، زیرا اندازه آرایه با هر تکرار واکشی می شود. از آنجا که اندازه هرگز تغییر نمی کند ، حلقه به راحتی با استفاده از یک متغیر میانی برای ذخیره اندازه به جای فراخوانی مکرر تعداد با تابع ()count بهینه می شود
مثال #۳ نمونه بهینه کد تغیرر مقادیر آرایه با حلقه for
<?php
$people = array(
array(‘name’ => ‘Kalle’, ‘salt’ => 856412),
array(‘name’ => ‘Pierre’, ‘salt’ => 215863)
);
for($i = 0, $size = count($people); $i < $size; ++$i) {
$people[$i][‘salt’] = mt_rand(000000, 999999);
}
?>
مثال #۴ حرکت روی مقادیر یک رشته با حلقه for
for($col = ‘R’; $col != ‘AD’; $col++) {
echo $col.’ ‘;
}
حلقه فوق مقادیر R S T U V W X Y Z AA AB AC را برمیگرداند
منبع : php.net
حلقه while و do while
حلقه while از سادهترین حلقهها در زبان برنامه نویسی php هست که میتواند برای مواردی که تعداد نا مشخص است به شدت کاربردی باشد مثل دریافت تعداد کاربران از دیتابیس یا هر مورد مشابهای که از دیتابیس بازیابی میشود به دلیل اینکه تعداد آن نا مشخص و هر لحظه در حال به روز شدن و افزایش است کاربرد دارد نوع نوشتاری این حلقه به شکل زیر است به بیان دیگر حلقه while تا زمانی که شرط شما برابر با مقدار true (درست) باشد کدهای شما را اجرا میکند
مانند تمامی ساختارهای کنترل در php میتوانید برای اجرای چندین خط کد در یک حلقه یا شرط از ساختار بلوکی {} یا : و ;endwhile استفاده کنید
while(test expr)
statement
مثال #۵ چاپ کردن عدد ۱ تا ۱۰ با حلقه while
<?php
/* example 1 */
$i = 1;
while ($i <= 10) {
echo $i++; /* the printed value would be
$i before the increment
(post-increment) */
}
/* example 2 */
$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;
?>
حلقه do while خیلی شبیه به while هست با تفاوت اینکه حتی در صورت صحیح نبودن قسمت شرط دستورات شما حداقل یکبار اجرا میشوند در واقع شرط شما در انتهای اجرای هر بار خط کد بررسی میشود تنها یک نوع سنتکس برای این حلقه وجود دارد که به صورت زیر است
مثال #۶ چاپ مقدار متغیر در حلقه do while
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
do {
if ($i < 5) {
echo “i is not big enough”;
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo “i is ok”;
/* process i */
} while (0);
?>
شرطهای بالا با اینکه برابر با مقدار false میشوند با این حال حداقل یکبار اجرا میشوند بعد از اولین تکرار کنترل برنامه به حارج از حلقه هدایت میشود
منبع : php.net
منبع : php.net
حلقه foreach
حلقه foreach یک راه ساده برای حرکت روی آرایهها هست که فقط برای متغیرهایی از جنل آرایه و یا آبجکت میتوانید از آن استفاده کنید اگر برای نوع متغیر دیگری از این حلقه استفاده کنید برنامه با ارور مواجه خواهد شد دو ساختار نوشتاری برای این حلقه وجود دارد
foreach (iterable_expression as $value)
statement
foreach (iterable_expression as $key => $value)
statement
در نوع اول مقدار متغیری که foreach قابلیت تکرار روی آن را دارد با هر بار تکرار در متغیر value$ قرار میگیرد
در نوع دوم کلید (یا همان اندیس آرایهها) متغیری که foreach قابلیت حرکت روی آن را دارد با هر بار تکرار در متغیر key$ قرار میدهد
برای درک بیشتر حلقه foreach به مثالهای زیر توجه کنید
مثال #۷ حرک روی آرایه با foreach
<?php
/* foreach example 1: value only */
$a = array(1, 2, 3, 17);
foreach ($a as $v) {
echo “Current value of \$a: $v.\n”;
}
/* foreach example 2: value (with its manual access notation printed for illustration) */
$a = array(1, 2, 3, 17);
$i = 0; /* for illustrative purposes only */
foreach ($a as $v) {
echo “\$a[$i] => $v.\n”;
$i++;
}
/* foreach example 3: key and value */
$a = array(
“one” => 1,
“two” => 2,
“three” => 3,
“seventeen” => 17
);
foreach ($a as $k => $v) {
echo “\$a[$k] => $v.\n”;
}
/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = “a”;
$a[0][1] = “b”;
$a[1][0] = “y”;
$a[1][1] = “z”;
foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo “$v2\n”;
}
}
/* foreach example 5: dynamic arrays */
foreach (array(1, 2, 3, 4, 5) as $v) {
echo “$v\n”;
}
?>
شما نمیتوانید مقدار متغیرتان را در حلقه foreach تغییر دهید مگر از علامت & که به معنی اراج دادن متغیر (reference) در هنگام تعریف متغیر استفاده کنید و برای حذف متغیر مرجع از تابع ()unset میتوانید استفاده کنید که متغیر را حذف میکند
مثال #۸ تغییر مقادیر آرایه در foreach
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>
توجه داشته باشید که تعیرف متغیر مرجع در حلقه foreach حتی بعد از اتمام حلقه هم باقی میماند بنابراین پیشناهاد میشود که متغیر مرجع را با تابع ()unset بعد از اتمام تغییرات حذف کنید
منبع : php.net
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.