Forum und email

משתנים

Table of Contents

הסבר בסיסי

משתנים ב-PHP מיוצגים על-ידי שם עם סימן הדולר בתחילתו. קיימת הבחנה בין אותיות תחיליות לאותיות רגילות בשמות המשתנים (case-sensitive).

חוקי כל התויות ב-PHP תקפים גם לגבי שמות משתנים. שם משתנה תקין יתחיל עם אות או תו הקו-התחתון ואחריו יתכן רצף של אותיות מספרים או קו-תחתון. ניתן לתאר את חוקיות שם המשתנה בעזרת ביטוי רגולרי כזה: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Note: הכוונה פה היא לתוים a-z,A-Z ותוי ה-ASCII מתו מספר 127 עד תו 255 (0x7f-0xff) .

<?php
$var 
"Bob";
$Var "Joe";
echo 
"$var, $Var";      // outputs "Bob, Joe"

$4site 'not yet';     // invalid; starts with a number
$_4site 'not yet';    // valid; starts with an underscore
$tהyte 'mansikka';    // valid; 'ה' is (Extended) ASCII 228.
?>

ב-PHP 3 תמיד מציבים ערכים למשתנה. כלומר, כאשר נציב ביטוי למשתנה, מועתק ערכו של כל הביטוי לתוך המשתנה. כאשר נציב את ערכו של משתנה מסויים למשתנה אחר, שינוי ערכו של אחד המשתנים לא ישפיע על המשתנה השני. למידע נוסף בנושא יש לעיין בפרק הביטויים.

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

כדי לבצע הצבה בעזרת מכוון יש להוסיף אמפרסנד (&) בתחילת שם המשתנה שמכוונים אליו (משתנה המקור). לדוגמה, הסקריפט הבא ידפיס פעמיים את המחרוזת 'My name is Bob' :

<?php
$foo 
'Bob';              // Assign the value 'Bob' to $foo
$bar = &$foo;              // Reference $foo via $bar.
$bar "My name is $bar";  // Alter $bar...
echo $bar;
echo 
$foo;                 // $foo is altered too.
?>

חשוב לציין כי רק משתנה בעל שם יכול לקבל הצבה בעזרת מכוון.

<?php
$foo 
25;
$bar = &$foo;      // פקודה תקינה
$bar = &(24 7);  // פקודה לא תקינה, הכוונה לביטוי ללא שם

function test()
{
   return 
25;
}

$bar = &test();    // לא תקין
?>