Before leaving the topic of PHP variables, it’s worth taking a look at how to name variables. All PHP variable names have to follow these rules:
- They start with a
$
(dollar) symbol. - The first character after the dollar must be either a letter or a
_
(underscore) symbol. - The other characters may be letters, numbers, and/or underscores.
Variable names can be as long as you like, but it’s a good idea to keep them relatively short (otherwise they can get quite unwieldy). It’s also good to use meaningful variable names — for example,
$numWidgets
is much more useful than $nw
.
PHP variable names are case-sensitive, which means that
$myVariable
and $MyVariable
refer to different variables.
Which of the following are valid PHP variables?
@$foo
&$variable
${0}
${1}
${0×0}
${0y0}
${030}
$variable
$0×0
${0*0}
${0+0}
${0-0}
${0/0}
${0%0}
&$variable
${0}
${1}
${0×0}
${0y0}
${030}
$variable
$0×0
${0*0}
${0+0}
${0-0}
${0/0}
${0%0}
Variable scope
The scope of a variable is the context within which it is defined. For the most part all PHP variables only have a single scope. This single scope spans included and required files as well. For example:
b.inc file
<?php $a=2; ?> <?php $a = 1; include 'b.inc'; echo $a; ?>
Here the $a variable will be available within the included b.inc script
Within user-defined functions a local function scope is introduced. Any variable used inside a function is by default limited to the local function scope. For example:
<?php $a = 1; /* global scope */ function test() { echo $a; /* reference to local scope variable */ } test(); ?>
This script will not produce any output because the echo statement refers to a local version of the $avariable, and it has not been assigned a value within this scope. You may notice that this is a little bit different from the C language in that global variables in C are automatically available to functions unless specifically overridden by a local definition. This can cause some problems in that people may inadvertently change a global variable. In PHP global variables must be declared global inside a function if they are going to be used in that function.
THE GLOBAL KEYWORD
First, an example use of global:
Example #1 Using global
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?>
The above script will output 3. By declaring $a and $b global within the function, all references to either variable will refer to the global version. There is no limit to the number of global variables that can be manipulated by a function.
A second way to access variables from the global scope is to use the special PHP-defined $GLOBALS array. The previous example can be rewritten as:
Example #2 Using $GLOBALS instead of global
<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b; ?>
USING STATIC VARIABLES
Another important feature of variable scoping is the static variable. A static variable exists only in a local function scope, but it does not lose its value when program execution leaves this scope. Consider the following example:
<?php function test() { $a = 0; echo $a; $a++; } test(); // Output will be 0 test();// Output will be 0 test();// Output will be 0 ?>
This function is quite useless since every time it is called it sets $a to 0 and prints 0. The $a++ which increments the variable serves no purpose since as soon as the function exits the $a variable disappears. To make a useful counting function which will not lose track of the current count, the $a variable is declared static:
<?php function test() { static $a = 0; echo $a; $a++; } test(); // output should 0 test(); // output should 1 test(); //output should 2 ?>
Now, $a is initialized only in first call of function and every time the test() function is called it will print the value of $a and increment it.
0 comments:
Post a Comment