קדימות אופרטורים
חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 20 מתוך 71.
כאשר ביטוי מכיל כמה אופרטורים, PHP פועלת לפי סדר מסוים שנקרא קדימות אופרטורים. בדיוק כמו במתמטיקה, כפל וחילוק מתבצעים לפני חיבור וחיסור.
<?php
echo 5 + 3 * 2; // פלט: 11, לא 16
?>PHP מכפילה קודם את 3 × 2 (ומקבלת 6), ואז מוסיפה 5. אילו לאופרטורים הייתה אותה רמת קדימות, החישוב היה מתבצע משמאל לימין: 5 + 3 = 8, ואז 8 × 2 = 16. אבל כך זה לא עובד.
הנה סדר הקדימויות שלמדת, מהגבוה לנמוך, עבור האופרטורים:
| עדיפות | אופרטורים |
| הגבוהה ביותר | ** (העלאה בחזקה) |
| גבוהה | * / % |
| נמוכה | + - |
כדי לשנות את סדר ברירת המחדל, השתמשו בסוגריים. פעולות בתוך סוגריים תמיד מחושבות תחילה:
<?php
echo (5 + 3) * 2; // פלט: 16
echo 2 ** 3 * 2; // פלט: 16 (8 * 2)
echo 2 ** (3 * 2); // פלט: 64 (2^6)
?>כשיש ספק, השתמש בסוגריים כדי להבהיר את כוונותיך. כך הקוד שלך יהיה קל יותר לקריאה, ותימנע מתוצאות בלתי צפויות.
אתגר
קלקראו שלושה מספרים מהקלט: a, b ו-c.
חשבו והדפיסו את התוצאה של הביטוי הבא, תוך שימוש בסוגריים כדי להבטיח שהחיבור יתבצע לפני הכפל:
(a + b) * c ** 2
כלומר: תחילה חברו את a ואת b, ואז הכפילו את הסכום הזה ב-c בחזקת 2.
דוגמה:
אם הקלט הוא 2, 3 ו-4, הפלט צריך להיות 80 כי:
- תחילה, חברו 2 + 3 = 5
- לאחר מכן, חשבו 4 ** 2 = 16
- לבסוף, הכפילו 5 * 16 = 80
נסו בעצמכם
<?php
// קרא את הקלט
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: כתוב את הקוד שלך למטה כדי לחשב (a + b) * c ** 2
// הדפס את התוצאה
echo $result;
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזותתרגלו בעצמכם: קומפיילר PHP אונליין