אתה נמצא כאן יסודות השפה  >>  מבני בקרה  >>  תנאי if

תנאי if

מבנה הבקרה if חשוב מאוד בשפות תכנות, ובכללם PHP. מבנה הבקרה נראה כך:

<?php
  if (expr1)
/*אם הביטוי expr1 הוא אמת...
מבצעים את הקוד statements_1.
*/

  {
     ...
     statements_1;
     ...
  }
  elseif (expr2)
/*אחרת (במקרה ש-expr1 הוא שקר),
אם הביטוי expr2 הוא אמת...
מבצעים את הקוד statements_2.
*/

  {
     ...
     statements_2;
     ...
  }
  . . .
  . . .
/*כאן באים עוד תנאים של elseif
(לפי הצורך וללא הגבלת כמות).
*/

  else
/*אחרת (במקרה שכל התנאים שלפני הם שקר),
ללא בדיקת תנאי נוסף...
מבצעים את הקוד statements_last.
*/

  {
     ...
     statements_last;
     ...
  }
?>

- התנאים של elseif ו-else הם לא הכרחיים בכל מבנה של if, אלא עושים בהם שימוש רק אם יש צורך בכך.
- הסוגריים המסולסלים לא הכרחיים במקרה שיש רק פקודה אחת.
- לא יבואו תנאים של elseif או else לבדם (ז"א שלא יהיו פקודות בין הבלוקים לתנאים אלו).
- ניתן לרשום גם 'else if' במקום 'elseif'. ההתנהגות היא זהה, למרות ש-PHP מתייחסת לזה קצת אחרת.

הדוגמא הבאה תמחיש את השימוש במבנה הבקרה הזה:

<?php
  $a=-5;
  if ($a>0)
     echo "a is positive.";
/*אם $a גדול מ-0,
נדפיס: a is positive.
*/

  elseif ($a<0)
     echo "a is negative.";
/*אחרת (במקרה ש-$a לא גדול מ-0),
אם $a קטן מ-0,
נדפיס: a is negative.
*/

  else
     echo "a is zero.";
/*אחרת (במקרה ש-$a לא גדול מ-0 ולא קטן מ-0),
ללא בדיקת תנאי נוסף,
נדפיס: a is zero.
*/

?>

ישנה צורה נוספת לכתוב תנאי if ללא סוגריים מסולסלים, אלא ע"י if: ו-endif. ניתן דוגמא לכך:

<?php
  $a=3;
  if ($a<=2):
     echo "a is smaller or eqaul to 2.";
     $a++;
  elseif ($a>=4):
     echo "a is bigger or equal to 4.";
     $a--;
  else:
     echo "a is equal to 3.";
  endif;
/*מסיים את מבנה ה-if*/

?>


תגובות בנושא

elseif ו- else if 09-12-02 03:02
 [ללא שם]
#424

במדריך נכתב
"ניתן לרשום גם 'else if' במקום 'elseif'. ההתנהגות היא זהה, למרות ש-PHP מתייחסת לזה קצת אחרת.
"
תוכל לפרט קצת
איך בידיוק PHP מתייחסת לזה

ההבדל בין elseif לבין else if 09-12-02 05:00
 אלי חן (מנהל)
#426

מבנה ה-if מורכב מ 3 מילות מפתח:
if, elseif, else
if הוא התנאי הראשון, else היא הברירת מחדל במקרה והתנאים לפני לא מתקיימים. elseif בא אחרי ה-if ולפני ה-else, והוא בדיקת תנאי באמצע. ה-else הוא ברירת מחדל בסוף, ואם רושמים else if זה כאילו רושמים else ומתחתיו (בבלוק {}) רושמים if חדש..
elseif הוא פשוט יותר טבעי רציף משימוש ב-else if..

האם אפשר לעשות.. 02-12-03 01:01
 יולו
#677

האם אפשר לעשות
else
ובתוכו לעשות if חדש כמו בפסקל?
כי בפסקל למשל אין
elseif
עושים
else
וככה להכניס תנאי בתוך תנאי ואז שוב פעם else וכאלה? האם זה אפשרי? אני ישמח אם תענה לי.. כי כרגע אין לי שרת על המחשב רק בקרוב יהיה לי. תודה מראש יולו!

elseif וגם else if 02-12-03 01:01
 אלי חן (מנהל)
#680

שני המקרים אפשריים ב-PHP.. מבחינה לוגית, המקרים זהים.. אך מבחינת PHP ההרצה של הקוד תהיה קצת שונה.
אבל בהחלט אפשר להשתמש באיזו צורה שרוצים - שניהם עובדים.

איך אני עושה 07-12-03 09:01
 דורון
#974

איך אני עושה שאם רשמו משהו ב input type
בעברית זה ירשום לי INVVILD MAIL?

השוואת תווים 09-12-03 03:01
 טל חדד
#1093

אני לא יודע איך להסביר אז אני אתן השואה:
האים:
if("'"="&#039;")
יחזיר אמת?
וכידוע: "'"="&#039;"
נ.ב:אני יודע שצריך לשים תו הברחה("") בחלק מהמקומות אבל תתיחס לזה כיאילו יש
תודה מראש

מחרוזות ב-PHP וב-HTML 09-12-03 18:02
 אלי חן (מנהל)
#1127

מחרוזות ב-PHP וב-HTML זה לא אותו דבר... PHP רואה את המחרוזת "&039;" שונה מהמחרוזת "'" (אין צורך להבריח את התו גרש בשימוש בגרשיים). אבל יש ב-PHP פונקציה שממירה תווים למחרוזת בקוד HTML.
השתמש בפונקציה htmlentities:
if (htmlentities("'",ENT_QUOTES)=="&039;") echo "YES";
הפלט יהיה YES.

איך אני בודק תיבה? 01-12-04 07:01
 [ללא שם]
#1370

אני רוצה לעשות כמה תיבות Checkbox ואז לשלוח אותם לעמוד php. והעמוד השני יבדוק איזה תיבות סומנו ויכניס אותם למשתנה. איך עושים את זה?

איך אני עושה... 03-12-06 02:01
 מתן שאטי
#2661

איך אני עושה if שמתי שאני לוחץ על כפתור הוא עושה לי פעולות שאני אומר לו!
תודה לעוזרים

עזרה! 01-12-07 12:01
 סוס סוסס
#2742

[code]
if ($name==moshe)

if ($pass==1234){
1
else
{
1
}
}
[/code]

למה הקלט מקבל כל הזמן את התנאי הראשון ולא לפני מה שהוא צריך ?

שאלה... 09-12-08 06:00
 עידן חכים
#2814

האם אני יכול לרשום במקום print - echo?


לדף הקודםמבני בקרה -הקודם
לתחילת הדףלתחילת הדף
הבא- לולאת whileלדף הבא