Forum und email

ביטויים

ביטויים הם אחד מאבני הייסוד הכי חשובים ב PHP. ב PHP, כמעט כל דבר שכותבים הוא ביטוי. הדרך הפשוטה והמדוייקת ביותר להגדיר את המונח "ביטוי" היא "כל דבר שיש לו ערך".

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

אחרי ההצבה הנ"ל, כצפוי הערך של $a הוא 5. כמו כן, אם ייתכב בתוכנית $b = $a, התוצאה תהיה כאילו נכתב $b = 5. במילים אחרות, $a הוא "ביטוי" עם הערך 5 גם כן.

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

function foo ()
{
    return 5;
}

בהנחה שיש לך היכרות עם הנושא של פונקציות (אם התשובה שלילית תן הצצה בפרק הדן ב"פונקציות"), אתה בטח מניח שהביטוי $c = foo() הוא ביסודו ממש כמו כתיבת $c = 5, וכמבן שאתה צודק. פונקציות הן ביטויים עם הערך שהן עצמן מחזירות. מאחר ו foo() מחזיר את הערך 5, אפשר לאמר שהערך של הפונקציה 'foo()' הוא 5. לרוב, פוקנקציות לא רק מחזירות ערך סטטי, אלא גם מבצעות חישוב כלשהו.

כמובן, ערכים ב PHP לא חייבים להיות integers (מספרים שלמים), ולעיתים קרובות הם לא. PHP תומכת בשלושה ערכים סקאלריים (הסבר בהמשך): מספרים שלמים, ערכי נקודה צפה (מספרים לא שלמים) וערכי מחרוזת (ערכים סקלריים-scalar- הם ערכים שלא ניתן ל"שבור" לחקלים קטנים יותר, להבדיל למשל ממערכים). PHP תומכת כמובן בשני סוגי ערכים מורכבים(non-scalar): מערכים ואובייקטים. כל אחד מסוג ערכים זה יכול להיות מוקצה לתוך משתנה או או להיות מוחזר מתוך פונקציות.

לפי שעה, משתמשים של PHP/FI 2 לא צריכים להרגיש כל שינוי. בכל מקרה, PHP לקחו את "הביטויים" רחוק יותר, ממש כפי שעשו שפות רבות אחרות. PHP היא שפה מונחית ביטויים , מהבחינה שכמעט כל דבר בשפה מבוסס על ביטויים. אפשר לחשוב על על הדוגמא שכבר עסקנו בא, '$a = 5'. קל מאוד לראות שמעורבים בה 2 ערכים, הערך של הקבוע השלם '5', והערך של $a שלמעשה עודכן להיות גם הוא 5. למען האמת יש במקרה הנדון עוד ערך נוסף שמעורב, וההערך הוא ההצבה עצמה. ההצבה עצמה יוצרת ערך גם לערך המוקצה, במקרה הזה 5. למעשה, זה אומר ש '$a = 5', מבלי להתייחס למה שהוא עושה, הוא ביטוי עם הערך 5. לכן, כתיבה של '$b = ($a = 5)' היא כמו כתיבה של '$a = 5; $b = 5;' (הסימן נקודה פסיק ';' מסמן סיום של משפט הוראה). מאחר וניתוח המשפט נעשה מימין לשמאל, אפשר למעשה גם לכתוב: '$b = $a = 5'.

דוגמא טובה נוספת להסבר צורת קריאת הביטויים: משתמשי PHP/FI 2 ושפות אחרות עשויים להכיר את קיומם של האופרטורים משתנה++ ו משתנה--. אלו הם האופרטורים לקידום ולהחסרה. ב PHP/FI 2, המשפט '$a++' הוא חסר ערך (הוא אינו ביטוי), ולכן אין בו כל שימוש. PHP מגבירה את היכולות של אופרטורי ההגדלה/חיסור על ידי הפיכתם לביטויים, ממש כמו ב C. ב PHP, כמו ב C, ישנם שני סוגים של אופרטורי הגדלה pre-increment ו post-increment. שני אלה ביסודם מגדילים את ערכי המשתנה, והאפקט על המשתנה הוא זהה. ההבדל הוא בערך של המשתנה המוגדל. Pre-increment, שנכתב כ '++$variable', מגדיל את הערך המוגדל (PHP מגדילה את הערך לפני שהיא קוראת את הערך לכן המונח 'pre-increment' או בתרגום צולע משהו: "מוגדל מראש"). Post-increment, שנכתב כ '$variable++' מציב את הערך המקורי של $variable, לפני שהוא מגדיל אותו (PHP מגדילה את הערך של המשתנה אחרי שקראה את ערכו, לפיכך השם 'post-increment').

סוג נוסף של ביטויים הוא ביטוי השוואה. ביטויים אלו מוערכים כ 0 או 1, כלומר כ FALSE או כ TRUE (בהתאמה). PHP תומכת ב > (גדול מ), >= (גדול או שווה ל), == (שווה), != (לא שווה), < (קטן מ) and <= (קטן או שווה ל). השימוש בביטויים אלו נפוך בעיקר בביצוע משפטי תנאי , מהסוג של if לדוגמא.

הסוג השלישי של נתונים שנדבר עליו הוא, שילוב של אופרטור והשמה. כדי להעלות את הערך של המשתנה $a ב - 1, אפשר בפשטות לכתוב '$a++' או '++$a'. אבל כשנרצה להעלות את הערך שלו ביותר מאחד בשלוש למשל, אפשר לכתוב את הביטוי '$a++' 3 פעמים, וזה כמובן לא בדיוק יעיל. שיטה עדיפה בהרבה היא לכתוב '$a = $a + 3'. '$a + 3' מוערך כערך של $a ועוד 3, וכל זה מושם חזרה לתוך המשתנה $a, כשהתוצאה היא שהעלינו את הערך של $a ב 3. ב PHP, כמו בשפות אחרות, דוגמת C, אפשר לקצר ולכתוב פשוט '$a += 3'. שפרושה : כך את הערך שב $a, תוסיף לו 3 , ותשים את הערך חזרה ב $a". בנוסף לזה שהכתיבה קצרה יותר ומובנת יותר, הביצועים של הצורה הזאת מהירים יותר. הערך של '$a += 3', כמו ערך של השמה רגילה, הוא הערך המושם. שים לב שהוא איננו 3 אלא שילוב של הערכים של $a ו 3 (זה הערך שמושם ל $a). כל האופרטורים שמטפלים בשני משתנים, יכולים לטפל בהשמה מהצורה הזאת למשל, '$a -= 5' (הפחת 5 מהערך של $a), '$b *= 7' (תכפיל את $b ב 7), וכו'.

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

<?php
$first ? $second : $third
?>

אם הערך של הביטוי הראשון first הוא אמת- TRUE (לא אפס), אז יחושב הערך של הביטוי השני,וזה יהיה התוצאה של תנאי המשולש אחרת, הביטוי השלישי יחושב, והוא יהיה התוצאה של התנאי המשולש.

הדוגמאות הבאות אמורות לעזור לך להבין את העניינים:

<?php
function double($i)
{
    return 
$i*2;
}
$b $a 5;        /* assign the value five into the variable $a and $b */
$c $a++;          /* post-increment, assign original value of $a 
                       (5) to $c */
$e $d = ++$b;     /* pre-increment, assign the incremented value of 
                       $b (6) to $d and $e */

/* at this point, both $d and $e are equal to 6 */

$f double($d++);  /* assign twice the value of $d before
                       the increment, 2*6 = 12 to $f */
$g double(++$e);  /* assign twice the value of $e after
                       the increment, 2*7 = 14 to $g */
$h $g += 10;      /* first, $g is incremented by 10 and ends with the 
                       value of 24. the value of the assignment (24) is 
                       then assigned into $h, and $h ends with the value 
                       of 24 as well. */
?>

בתחילת הפרק אמרנו שנדון על מספר סוגים של הצהרות, כמו שהבטחנו , ביטויים יכולים להיות הצהרות. אבל לא כל ביטוי הוא הצהרה, הצהרה בנויה מביטוי ו ';' התו נקודה פסיק. בביטוי '$b=$a=5;', $a=5 הוא ביטוי תיקני, אבל הוא לא הצהרה, בפני עצמו. לעומתו, '$b=$a=5;' הוא כן הצהרה תיקנית.

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

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