לדלג לתוכן

PHP/משפטי תנאי

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
< PHP

מה זה משפט תנאי?

[עריכה]

משפט תנאי זה בעצם משפט שבו אנחנו כותבים תנאי מסוים - נניח המשתנה animal שווה ל"תמנון". לאחר מכן אנחנו כותבים מה יקרה אם התנאי נכון. ב99% מהקודים יש משפטי תנאי.

משפט If

[עריכה]

דוגמאות

[עריכה]

דוגמא ראשונה

[עריכה]
 <?php
 $foo = 1;
 $bar = 2;
 if($foo == $bar) {
     echo "$foo is equal to $bar.";
 } else if ($foo > $bar) {
     echo "$foo is greater than $bar.";
 } else {
     echo "$foo is less than $bar.";
 } ?>

דוגמא שנייה

[עריכה]
 <?php
 $lower = 10;
 $upper = 100;
 $needle = 25;
 if(($needle >= $lower) && ($needle <= $upper)) {
     echo "The needle is in the haystack.";
 } else if(($needle <= $lower) || ($needle >= $upper)) {
     echo "The needle is outside of the haystack.";
 } ?>

דוגמא שלישית

[עריכה]
 <?php
$cost = 30;
$should_i_buy = ($cost < 50) ? "Buy it" : "Don't buy it";
print $should_i_buy;
 ?>

ניתוח

[עריכה]

דוגמא ראשונה

[עריכה]

קטע הקוד מראה דוגמא לביצוע מותנה. בדוגמא, שני משפטים יכולים להיות שקריים. אם שניהם יהיו "שקר", הקוד שמופיע ב-else הוא שיבוצע. המשפטים הלוגיים הם:

if ($foo == $bar) //1  

else if ($foo > $bar) //2

else //3

הערה 1) האם foo ו-bar שווים אחד לשני?

הערה 2) אם לא, האם foo גדול יותר מ-bar?

הערה 3) אם לא זה ולא זה, אז bar גדול יותר מ-foo

אחרי כל משפט אנחנו רואים סוגריים מסולסות ({}). אלה מסמנות את שורות הקוד שיבוצעו אם המשפט יהיה "אמת", אם הביטוי יהיה "שקר" הקוד בסוגריים ידולג. משתמשים בסוגריים מסולסלות בכל בלוק, לא רק במשפטי תנאי (אתם תלמדו בלוקים נוספים בהמשך). חובה להשתמש בסוגריים מסולסלות רק כאשר יש יותר מפקודה אחת, כאשר יש רק פקודה אחת, זה יכול לפעול גם ללא הסוגריים. בדוגמא הספציפית הזו, שני המשפטים הראשונים יהיו "שקר" וברירת המחדל (else) תבוצע. והפלט יהיה:

1 is less than 2.

שמבחינה לוגית הוא נכון.

דוגמא שנייה

[עריכה]

גם כאן ישנו תנאי מותנה, אבל הוספנו לכל אחד מהתנאים ביטוי המורכב ממספר תנאים.

 <?php
 if(($needle >= $lower) && ($needle <= $upper)) //1

//2 else if(($needle <= $lower) || ($needle >= $upper)) 
  • הערה 1) אם ערך המחט גדול או שווה לערך הנמוך וגם קטן או שווה לערך הגבוה.
  • הערה 2) אם לא, האם ערך המחט הוא שווה או מהערך הנמוך או שהערך שווה או גבוה מהערך הגבוה.
  1. השימוש באופרטורים <= או >= אומרים לתנאי שאפשר שהערכים יהיו גם שווים.
  2. השימוש באופרטורים && ו-|| מאפשרים לחבר שני תנאים בצורה לוגית לתנאי אחד. && מצרף את שני התנאים בצורה של גם, כלומר התנאי יהיה נכון רק אם כל התנאי יתקיימו. || מצרף אותם בצורה של או ומספיק שרק אחד התנאי יתקיים.
  3. אפשר לצרף יותר משני תנאים ביחד, ואפשר גם לערבב בין חיבור תנאי ב-&& וב-||. חשוב לשמור על סדר לוגי בין התנאי בעזרת סוגריים רגילות () מכיוון שיש הבדל אם סדר הפעולות משתנה. לדוגמא, שקר וגם אמת או אמת יכול להתפרש:
    1. (שקר וגם אמת) או אמת. שזה שקר או אמת ולכן זה אמת
    2. שקר וגם (אמת או אמת). שזה שקר וגם אמת ולכן זה שקר
  4. האופרטורים && ו-|| מקורם בשפת C. ניתן להשתמש באופרטורים and ו-or במקומם. הערה חשובה: אין לערב בין שני סוגי האופרטורים במשפט תנאי אחד. זה יגרום לשינוי בסדר הפעולות הנכון.

דוגמא שלישית

[עריכה]

בדוגמא השלישית אנחנו רואים סוג תחביר (syntax) חדש למשפטי תנאי. במידה ויש לנו משפא תנאי שבו יש לנו תוצאה גם לאמת וגם לשקר אנחנו יכולים לכתוב את התנאי בתוך סוגריים, לשים אחריו סימן שאלה ואת הפעולה למקרה של אמת. לאחר מכן נקודתיים ואת הפעולה למקרה של שקר.

  • התחביר הזה נועד למקרים פשוטים. במידה ובכל אחד מהמקרים יקרה משהו שונה לחלוטין (לדוגמא, אם אמת תדפיס משהו ואם שקר תפעיל תוכנה) יהיה קשה מאוד להבין את רצף הקוד. לעומת זאת השמה של משתנים או הדפסה שונה הם מקרים שבהם נוח יותר לשתמש בתחביר הזה.
  • יכלנו גם לכתוב בקיצור:
 <?php
$cost = 30;
print ($cost < 50) ? "Buy it" : "Don't buy it";
 ?>

רשימת אפשרויות

[עריכה]

כמו שראינו , אם נרצה לעשות לדוגמה רשימת אפשרויות - לדוגמה - אם הציון פחות מ50 - נכשל אם הציון בין 50 ל60 - ... ... אם הציון הוא בין 90 ל100 - מצוין זה ייקח לנו המון if וelseif שממש יכערו לנו את הקוד , ויהיו בלתי קריאים. בפרק הבא נלמד בדיוק איך פותרים דבר כזה - מבנה בקרה switch.

מושגים חדשים

[עריכה]
  • if אם
  • else if אם אז
  • else אז
  • ==
  • <
  • >
  • <=
  • >=
  • &&
  • ||
  • and
  • or

מבני תנאים

[עריכה]

בלוקים

[עריכה]

למידע נוסף

[עריכה]


הפרק הקודם:
הערות
משפטי תנאי הפרק הבא:
switch