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

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

۳۹ مطلب با موضوع «پی اچ پی (PHP)» ثبت شده است

     ساختار switch مانند استفاده از چندین عبارت IF در مورد یک عبارت عمل می کند. در بسیاری از موارد، ممکن است بخواهید یک متغیر (یا عبارت) را با چندین مقدار مقایسه کنید، و متناسب با اینکه متغیر شما با چه مقادیری برابری می کند، قطعه کد خاصی را اجرا نمایید. در این حالت دقیقا باید از دستور switch استفاده کنید.

     توجه داشته باشید که بر خلاف برخی دیگر از زبان های برنامه نویسی، عبارت continue برای ساختار switch عمل می کند و رفتار آن همانند دستور break است. اگر شما یک دستور switch در داخل حلقه خود دارید و می خواهید به تکرار بعدی مربوط به حلقه خارجی بروید از دستور continue 2 استفاده کنید.

     دو مثال زیر دو نمونه متفاوت از نوشتن یک مثال است، که در مثال اول مجموعه ای از ifها و elseifها آورده شده است، و در دیگری از دستور switch استفاده شده است:

مثال

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>

مثال دیگر

<?php
switch ($i) {
    case "apple":
        echo "i is apple";
        break;
    case "bar":
        echo "i is bar";
        break;
    case "cake":
        echo "i is cake";
        break;
}
?>

     مهم است که بدانید عبارت switch به چه ترتیبی اجرا می شود تا از بروز خطا جلوگیری کنید. عبارت switch به صورت خط به خط اجرا می شود (در اصل عبارت به عبارت). در ابتدا، هیچ کدی اجرا نمی شود. فقط زمانی که یک عبارت case پیدا می شود که مقدار آن با مقدار عبارت switch برابر است، پی اچ پی شروع به اجرای عبارت می کند. پی اچ پی اجرای عبارت (ها) را تا زمانی ادامه می دهد که به انتهای قطعه switch برسد، یا تا زمانی که به اولین دستور break برخورد نماید. اگر شما دستور break را در انتهای عبارت case ننوشته باشید، پی اچ پی به سراغ اجرای عبارت های قسمت بعدی case می رود:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}
?>

     در مثال بالا اگر مقدار متغیر $i برابر با صفر باشد، پی اچ پی تمام عبارت های echo را اجرا می کند! اگر مقدار متغیر $i برابر با یک باشد، پی اچ پی دو عبارت آخر echoرا اجرا خواهد کرد. شما فقط زمانی رفتار مورد انتظار را مشاهده می کنید که مقدار متغیر $i برابر با دو باشد. بنابراین مهم است که عبارت break را فراموش نکنید (مگر اینکه در شرایط خاصی برای رسیدن به یک هدف خاص، از بکار بردن این عبارت خودداری کنید).

     در ک عبارت switch، شرط فقط یک مرتبه بررسی می شود و نتیجه با هر کدام از عبارت های case مقایسه می شود. در یک عبارت elseif، شرط دوباره بررسی می شد. اگر شرط شما از یک مقایسه ساده پیچیده تر است و یا در داخل یک حلقه بسته قرار دارد، یک عبارت switch می تواند سریع تر باشد.

     
<?php
switch ($i) {
case 0:
case 1:
case 2:
    echo "i is less than 3 but not negative";
    break;
case 3:
    echo "i is 3";
}
?>

     یک عبارت case خاص، default است. این عبارت زمانی نشان داده می شود که سایر عبارت های case با شرط، تطابق نداشته باشند. به عنوان مثال:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
       echo "i is not equal to 0, 1 or 2";
}
?>

     یک عبارت case می تواند هر نوع عبارتی باشد که با یک نوع ساده سنجیده می شود، یعنی یک عدد صحیح، عدد اعشاری و رشته. در اینجا نمی توان از آرایه ها یا اشیاء استفاده کرد، مگر اینکه آنها را به یک نوع ساده ارجاع داده باشیم.

     ساختار نحوی جایگزین برای ساختارهای کنترلی در ساختار switch پشتیبانی می شود.

<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;
?>

     می توان از علامت نقطه ویرگول به جای علامت دونقطه بعد از عبارت case استفاده کرد:

<?php
switch($beer)
{
    case 'tuborg';
    case 'carlsberg';
    case 'heineken';
        echo 'Good choice';
    break;
    default;
        echo 'Please make a new selection...';
    break;
}
?>
۰ نظر موافقین ۱ مخالفین ۰ ۱۶ خرداد ۹۴ ، ۱۲:۵۹
مهرداد یوسفی فرد

     دستور continue در داخل ساختارهای حلقه استفاده می شود؛ بدین صورت که به ما کمک می کند تا از تکرار حلقه فعلی خارج شویم و اجرای ارزیابی شرط را ادامه دهیم و سپس به ابتدای تکرار بعدی برویم.

     توجه داشته باشید که در زبان پی اچ پی یک عبارت switch به عنوان یک ساختار کنترلی برای continue در نظر گرفته می شود.

     دستور continue یک ورودی عددی اختیاری دارد که مشخص می کند چند سطح از حلقه ای که در آن قرار دارد باید نادیده گرفته شود. مقدار پیش فرض آن یک (1) است، که برابر است با خارج شده به سمت حلقه فعلی.

<?php
while (list($key, $value) = each($arr)) {
    if (!($key % 2)) { // skip odd members
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer
\n"; while (1) { echo "Middle
\n"; while (1) { echo "Inner
\n"; continue 3; } echo "This never gets output.
\n"; } echo "Neither does this.
\n"; } ?>

     اگر علامت نقطه ویرگول را در انتهای دستور continue قرار ندهید ممکن است دچار سردرگمی شوید. به مثال زیر توجه کنید:

<?php
for ($i = 0; $i < 5; ++$i) {
    if ($i == 2)
        continue
    print "$i\n";
}
?>

احتمالا منظور شما از نوشتن قطعه کد بالا رسیدن به نتیجه زیر بوده است:
0
1
3
4

     اما در پی اچ پی نسخه های 5.4.0 به پایین، این خروجی را خواهید داشت:
2

     به خاطر اینکه تمام عبارت continue print "$i\n" به عنوان یک عبارت ارزیابی می شود و در نتیجه تابع PRINT زمانی فراخوانی می شود که $i==2 باشد.

     توجه داشته باشید که در پی اچ پی نسخه 5.4.0 مثال بالا یک خطای E_COMPILE_ERROR بوجود می آورد.

۰ نظر موافقین ۱ مخالفین ۰ ۱۶ خرداد ۹۴ ، ۱۲:۴۸
مهرداد یوسفی فرد

     دستور break اجرای ساختار فعلی for, foreach, while, do-while, switch را خاتمه می دهد.
     دستور break یک ورودی عددی اختیاری دارد که با استفاده از آن مشخص می کنیم چند ساختار تودرتو باید متوقف شوند.

<?php
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val
\n"; } /* Using the optional argument. */ $i = 0; while (++$i) { switch ($i) { case 5: echo "At 5
\n"; break 1; /* Exit only the switch. */ case 10: echo "At 10; quitting
\n"; break 2; /* Exit the switch and the while. */ default: break; } } ?>
۰ نظر موافقین ۱ مخالفین ۰ ۱۲ خرداد ۹۴ ، ۱۳:۱۱
مهرداد یوسفی فرد

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

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

     شکل اول در داخل آرایه ای که با استفاده از array_expression مشخص شده است حرکت می کند. در هر تکرار، مقدار المان عنصر در داخل متغیر value ذخیره می شود و نشانگر داخلی آرایه برای عنصر بعدی تنظیم می گردد، یعنی در تکرار بعدی، به سراغ عنصر بعدی آرایه می رود.
     شکل دوم در هر تکرار علاوه بر کارهایی که در قسمت قبلی گفته شد، کلید هر عنصر را به متغیر key نسبت می دهد.

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

     برای اینکه بتوانید مستقیما عناصر آرایه را در داخل حلقه تغییر دهید، قبل از متغیر $value یک علامت & بگذارید. در این حالت مقدار متغیر را با مرجع نسبت می دهید.

<?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
?>

     تنها زمانی می توانید متغیر $valude را با مرجع نسبت دهید که آرایه ای که در داخل آن حرکت می کنید قابل ارجاع دادن باشد، به عبارت دیگر یک متغیر باشد. برای نمونه قطعه کد زیر اجرا نخواهد شد.

<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}
?>

     توجه داشته باشید که ارجاع به متغیر $value و آخرین عنصر آرایه حتی بعد از حلقه foreach نیز باقی می ماند. توصیه می شود که آن را با استفاده از تابع unset() از بین ببرید.

     نکته: در ساختار foreach نمی توانید از عملگر @ برای نادیده گرفتن خطاها استفاده کنید.

می توانید ببینید که دو مثال زیر از نظر عملی با یکدیگر مشابه هستند:

<?php
$arr = array("one", "two", "three");
reset($arr);
while (list(, $value) = each($arr)) {
    echo "Value: $value
\n"; } foreach ($arr as $value) { echo "Value: $value
\n"; } ?>

دو مورد زیر نیز با یکدیگر مشابه هستند:

<?php
$arr = array("one", "two", "three");
reset($arr);
while (list($key, $value) = each($arr)) {
    echo "Key: $key; Value: $value
\n"; } foreach ($arr as $key => $value) { echo "Key: $key; Value: $value
\n"; } ?>

چند مثال دیگر برای آشکارتر شدن نحوه استفاده:

<?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";
}
?>
بازکردن آرایه های تودرتو با استفاده از list()

     پی اچ پی نسخه 5.5 یک قابلیت جدید برای برنامه نویسان ایجاد کرده است، در این نسخه و نسخه های بالاتر می توانید با استفاده از تابع list() به عنوان مقدار، در داخل عناصر آرایه آرایه ها حرکت کنید و آرایه تودرتو را به متغیرهای حلقه تبدیل کنید. به مثال زیر توجه کنید:

 
<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a contains the first element of the nested array,
    // and $b contains the second element.
    echo "A: $a; B: $b\n";
}
?>

خروجی مثال بالا اینچنین خواهد بود:

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

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a)) {
    // Note that there is no $b here.
    echo "$a\n";
}
?>

خروجی مثال بالا به این شکل خواهد بود: 1 3

اگر تعداد عناصر آرایه برای پر کردن تابع list() کافی نباشند، خطایی رخ خواهد داد (در حد Notice):

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b, $c)) {
    echo "A: $a; B: $b; C: $c\n";
}
?>

خروجی قطعه کد بالا اینچنین خواهد بود:

Notice: Undefined offset: 2 in example.php on line 7
A: 1; B: 2; C: 

Notice: Undefined offset: 2 in example.php on line 7
A: 3; B: 4; C: 
۰ نظر موافقین ۱ مخالفین ۰ ۱۲ خرداد ۹۴ ، ۱۳:۰۶
مهرداد یوسفی فرد

     حلقه های ایجاد شده با استفاده از ساختار 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);
}
?>


۰ نظر موافقین ۱ مخالفین ۰ ۲۶ اسفند ۹۳ ، ۰۸:۵۳
مهرداد یوسفی فرد

     حلقه های do-while بسیار به حلقه های ایجاد شده با while شباهت دارند، با این تفاوت که در حلقه های do-while صحت عبارت در انتهای چرخه بررسی می شود نه در ابتدای آن. تفاوت اصلی حلقه do-while با حلقه while در این است که در این نوع حلقه، انجام اولین تکرار کد، تضمین شده است (به خاطر اینکه صحت عبارت در انتهای فرایند تکرار بررسی می شود)، در حالیکه اگر از حلقه while استفاده کرده باشید اجرای عبارت، برای اولین بار، تضمین شده نیست (به خاطر اینکه صحت عبارت در ابتدای فرایند تکرار بررسی می شود، و اگر مقدار عبارت معادل FALSE باشد، حلقه بلافاصله متوقف می شود).

     برای حلقه های از نوع do-while تنها یک ساختار دستوری وجود دارد: 

<?php
$i = 0;
do {
    echo $i;
} while ($i > 0);
?>

     حلقه ایجاد شده در مثال بالا، حتما یک مرتبه اجرا خواهد شد. یعنی در ابتدا کد مقدار متغیر i را نمایش می دهد و پس از آن عبارت داخل while را بررسی می کند، از آنجا که مقدار متغیر i از صفر بزرگتر نیست (مقدار آن معادل FALSE خواهد بود) اجرا حلقه متوقف خواهد شد. 

     کاربران حرفه ای زبان برنامه نویسی C ممکن است با کاربرد متفاوتی از حلقه do-while آشنا باشند، که به برنامه نویس اجازه می دهد در میانه بلوک کد بتواند فرایند اجرا را متوقف نماید. این کار را با کپسوله کردن حلقه با استفاده از عبارت do-while(0) و استفاده از عبارت break انجام می دهیم. در مثال زیر این کاربرد نمایش داده شده است: 

<?php
do {
    if ($i < 5) {
        echo "مقدار متغیر به اندازه کافی بزرگ نیست";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
   echo "مقدار متغیر قابل قبول است";

    /* process i */

} while (0);
?>

     البته اگر درک ساختار کد بالا برایتان مشکل است، خودتان را ناراحت نکنید، چون بدون استفاده از این ساختار نیز می توانید کدهای پیچیده خود را بنویسید. از نسخه 5.3.0 به بعد پی اچ پی به جای استفاده از این روش می توانید از عملگر goto استفاده کنید. 

۰ نظر موافقین ۱ مخالفین ۰ ۲۶ اسفند ۹۳ ، ۰۷:۵۹
مهرداد یوسفی فرد

     یکی دیگر از ساختارهای کنترلی در پی اچ پی (و البته در بسیاری دیگر از زبان های برنامه نویسی) استفاده از حلقه های تکرار است. حلقه هایی که با استفاده از while  ایجاد می شوند، ساده ترین انواع حلقه در پی اچ پی هستند. نحوه عملکرد آنها دقیقا شبیه به زبان c است. ساختار پایه یک عبارت while به شکل زیر است: 

while (expr)
    statement

     معنی و مفهوم یک عبارت while بسیار ساده است. این دستور به پی اچ پی می گوید که عبارت های داخل حلقه (statement) را تازمانی که مقدار عبارت تحت بررسی (expr) برابر با TRUE باشد اجرا نماید. مقدار عبارت هربار در آغاز حلقه بررسی می شود، بنابراین اگر این مقدار در طول اجرای عبارات داخل حلقه تغییر کند، تا زمانی که به انتهای تکرار نرسد، اجرای کدها متوقف نخواهد شد (هربار که پی اچ پی عبارات را در حلقه اجرا می کند، یک تکرار است). در حالتی که عبارت while از ابتدای حلقه با مقدار FALSE برخورد کند، عبارات داخل حلقه حتی یکبار هم اجرا نخواهند شد.

     همانطور که در مورد if نیز گفته شد، در داخل حلقه while نیز می توان مجموعه ای از عبارات را با استفاده از آکولاد قرار داد و آنها را اجرا کرد. 

while (expr):
    statement
    ...
endwhile;

     نمونه از از کابرد حلقه های while را در مثال های زیر مشاهده می کنید. در کدهای پایین، هر دو مثال اعداد 1 الی 10 را به ترتیب نمایش می دهند:


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

$i = 1;
while ($i <= 10) {
    echo $i++;  /* مقدار متغیر قبل از افزایش
                   نشان داده می شود.
                   (post-increment) */
}

/* مثال دوم */

$i = 1;
while ($i <= 10):
    echo $i;
    $i++;
endwhile;
?>
۰ نظر موافقین ۱ مخالفین ۰ ۲۵ اسفند ۹۳ ، ۱۳:۵۲
مهرداد یوسفی فرد

زبان پی اچ پی برای برخی از ساختارهای کنترلی خود مانند if, while, for, foreach, switch یک ساختار نحوی جایگزین را ارائه می کند؛ ساختار پایه مربوط به این روش به این شکل است که پرانتز ابتدایی به علامت دونقطه (:) تبدیل می شود و پرانتز انتهایی نیز به ترتیب به endif, endwhile, endfor, endforeach, endswitch تبدیل می شود. به عنوان نمونه به مثال زیر توجه کنید: 

<?php if ($a == 5): ?>
متغیر a برابر با 5 است
<?php endif; ?>

     در مثال بالا به جای اینکه از ساختار متعارف if استفاده شود از ساختار جایگزین استفاده کرده ایم. در این مثال قطعه کد اچ تی ام ال فقط زمانی نمایش داده می شود که مقدار متغیر a برابر با 5 باشد. 

     از این ساختار نحوی جایگزین می توان در مورد else و elseif هم استفاده کرد. در مثال زیر این کار انجام شده است: 

<?php
if ($a == 1):
    echo "مقدار متغیر برابر با 1 است";
    echo "...";
elseif ($a == 12):
    echo "مقدار متغیر برابر با 12 است";
    echo "!!!";
else:
    echo "مقدار متغیر نه برابر با 1 بود و نه برابر با 12";
endif;
?>

     حتما دقت کنید که در داخل یک بلوک کنترلی نمی توان به صورت همزمان از دو ساختار نحوی استفاده کرد. 

۱ نظر موافقین ۱ مخالفین ۰ ۲۵ اسفند ۹۳ ، ۱۳:۳۸
مهرداد یوسفی فرد

همانطور که از نام عبارت elseif مشخص است، ترکیبی است از if و else، این عبارت در زمانی که عبارت if اول مقدار FALSE را برگرداند برای گسترش عبارت if استفاده می شود (برای اجرای یک عبارت دیگر). بر خلاف عبارت else، این عبارت چنانچه فقط شرایط عبارت elseif برابر با TRUE باشد عبارت جایگزین را اجرا می کند.

     ساختار کلی به این شکل خواهد بود:

if (condition) {
    اگر شرط درست باشد این قسمت اجرا خواهد شد;
} elseif (condition) {
    اگر شرط درست باشد این قسمت اجرا خواهد شد;
} else {
    اگر شرط نادرست باشد این قسمت اجرا خواهد شد;
}

در مثال زیر، عبارت "a بزرگتر از b است"، "a برابر با b است"، یا "a کوچک تر از b است" نمایش داده خواهد شد: 

<?php
if ($a > $b) {
    echo "a بزرگتر از b است";
} elseif ($a == $b) {
    echo "a برابر با b است";
} else {
    echo "a کوچک تر از b است";
}
?>

می توان در داخل یک عبارت if از چند عبارت elseif استفاده کرد. اولین عبارت elseif که با مقدار TRUE مواجه می شود، اجرا خواهد شد. در پی اچ پی می توانید از عبارت else if نیز استفاده کنید (به صورت دو کلمه جداگانه)، که رفتار آن مشابه رفتار عبارت elseif است. البته معنی این دو از لحاظ ساختاری کمی با هم متفاوت است (اگر با زبان c آشنا باشید، این مورد را می فهمید) اما خروجی نهایی این دو مشابه یکدیگر است. 

عبارت elseif فقط زمانی اجرا می شود که عبارت قبلی if و هر عبارت elseif قبل از آن مقدارش FALSE باشد، و مقدار عبارت elseif فعلی برابر TRUE باشد. 

۰ نظر موافقین ۱ مخالفین ۰ ۲۳ اسفند ۹۳ ، ۱۳:۵۶
مهرداد یوسفی فرد

     اغلب اوقات شما می خواهید اگر یک شرایط خاص رخ داد، یک عبارت اجرا شود و اگر شرط مورد نظر شما رخ نداد، عبارت دیگری اجرا گردد. عبارت else در این مواقع استفاده می شود. از else برای مواردی استفاده می شود که مقدار عبارت موجود در if، مقدار FALSE را برگرداند.

     ساختار کلی این عبارت به شکل زیر است: 

if (condition) {
    اگر شرط درست باشد این قسمت از کد اجرا می شود;
} else {
    اگر شرط بالا نادرست باشد این قسمت از کد اجرا می شود;
}

به عنوان مثال، در کد زیر، اگر مقدار متغیر a از مقدار متغیر b بزرگتر باشد، عبارت "متغیرa بزرگر از متغیر b است" نمایش داده می شود، و در غیر اینصورت عبارت "متغیر a از متغیر b بزرگ تر نیست" نمایش داده خواهد شد.


<?php
if ($a > $b) {
  echo "متغیر a از متغیر b بزرگ تر است.";
} else {
  echo "متغیر a از متغیر b بزرگ تر نیست";
}
?>

     توجه داشته باشید که عبارت else زمانی اجرا می شود که مقدار عبارت if نادرست (FALSE) باشد. 

۰ نظر موافقین ۰ مخالفین ۰ ۲۳ اسفند ۹۳ ، ۱۳:۴۳
مهرداد یوسفی فرد