طراحی وب سایت کتابخانه

طراحی وب سایت کتابخانه

ایجاد حلقه با استفاده از for

سه شنبه, ۲۶ اسفند ۱۳۹۳، ۰۸:۵۳ ق.ظ

     حلقه های ایجاد شده با استفاده از ساختار for پیچیده ترین نوع حلقه ها در زبان پی اچ پی هستند. با استفاده از این ساختار، مجموعه ای از کدها را برای چند مرتبه مشخص تکرار می کنیم. این ساختار نیز همانند ساختار به کار رفته در زبان برنامه نویسی C می باشد. ساختار نحوی حلقه for به این شکل است: 

for (expr1; expr2; expr3)
    statement

     عبارت اول (expr1) در ابتدای حلقه، بدون قید و شرط، اجرا می شود. 

     در ابتدای هر فرایند تکرار، عبارت expr2 مورد بررسی قرار می گیرد. اگر مقدار آن معادل TRUE باشد، حلقه ادامه پیدا می کند و عبارت(ها) اجرا می شوند. اگر مقدار آن معادل FALSE باشد، اجرای حلقه به پایان می رسد. 

     در انتهای هر فرایند تکرار، مقدار expr3 ارزیابی می شود. 

     هر کدام از عبارت ها می توانند خالی باشند یا شامل چندین عبارت باشند که آنها را با استفاده از علامت ویرگول از هم جدا می کنید. در قسمت مربوط به عبارت expr2 تمام عبارتهایی که با استفاده از ویرگول از یکدیگر جدا شده اند ارزیابی می شوند اما نتیجه آخرین عبارت مورد ارزیابی قرار خواهد گرفت. اگر مقدار expr2 خالی باشد به این معنی است که حلقه باید بی نهایت تکرار شود (زبان پی اچ پی در این حالت همانند زبان C مقدار این عبارت را TRUE فرض می کند). البته این روش آنچنان هم کاربردی نیست، به خاطر اینکه اغلب شما تمایل دارید با استفاده از یک عبارت شرطی break حلقه خود را به پایان برسانید به جای اینکه از for استفاده کنید.

     به مثال های زیر توجه کنید. تمامی آنها اعداد 1 الی 10 را نمایش خواهند داد: 

<?php
/* مثال اول */

for ($i = 1; $i <= 10; $i++) {
    echo $i;
}

/* مثال دوم */

for ($i = 1; ; $i++) {
    if ($i > 10) {
        break;
    }
    echo $i;
}

/* مثال سوم */

$i = 1;
for (; ; ) {
    if ($i > 10) {
        break;
    }
    echo $i;
    $i++;
}

/* مثال چهارم */

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>

     شخصا مثال اول را ترجیح می دهم، چون بهتر است در نوشتن کدهای خود فقط به کوتاهی کدها توجه نکنید، خوانا بودن کدها و قابل درک بودن آنها مهم تر از کوتاه تر بودن آنها است.

     البته زبان پی اچ پی از یک ساختار نحوی جایگزین نیز پشتیبانی می کند: ساختار نحوی مبتنی بر علامت دونقطه (:):

for (expr1; expr2; expr3):
    statement
    ...
endfor;

     انجام فرایند تکرار در بین اعضای یک آرایه در بین کاربران زبان پی اچ پی کار رایجی است، مثال زیر را مشاهده کنید: 

<?php
/*
 * در این مثال می خواهیم در داخل آرایه حرکت کنیم
 * و با استفاده از حلقه برخی از مقادیر را تغییر دهیم
 */
$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() خودداری کنیم:

<?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);
}
?>


موافقین ۱ مخالفین ۰ ۹۳/۱۲/۲۶
مهرداد یوسفی فرد

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی