What is variable scope?
When using variables, they must comply with the definition rules of variables. Variables must be used within a valid range. If the variable exceeds the limited range, the variable will be meaningless. Just like if we have one hundred yuan, we can buy things within one hundred yuan. If the item exceeds one hundred yuan, , then the one hundred yuan cannot be used. One hundred dollars is equivalent to this variable, and the range within one hundred dollars is equivalent to the scope.
PHP variables are divided into local variables, global variables and static variables due to different scopes, as shown in the following table:
Scope | Explanation |
Local variables | The scope of a variable defined inside a function is the scope of the function where it is located |
Global variables | The scope of variables outside of all defined functions is the entire PHP file, but cannot be used inside user-defined functions. If you want users to use global variables inside user-defined functions, use the global keyword to declare global variables |
static variables | can be used in functions The variable value is retained after the call is completed, and when it returns to its scope again, the original value can continue to be used. For general variables, after the function is called, the data value stored in it will be cleared and the memory space occupied will be released. When using static variables, you must first use the keyword static to declare the variable, and put the keyword static before the variable to be defined |
A variable defined inside a function has its scope as the function in which it is located. If assigned outside the function, it will be considered a completely different variable. When exiting the function in which the variable was declared, the variable and its corresponding value are cleared.
Example
This example is used to compare variables assigned within the function (local variables) and variables assigned outside the function (global variables). The example code is as follows:
<?php header("content-type:text/html;charset=utf-8"); $exam= "在函数外定义"; //声明全局变量 function add(){ $exam="在函数内定义"; //声明局部变量 echo "在函数内输出的内容是:".$exam."<br/>"; //输出局部变量 } add(); //调用函数 echo "在函数外输出的内容是:".$exam; //输出全局变量 ?>
The running results are as follows:
Static variables can be used in many places. For example, use static variables in a blog to record the number of visitors. Every time a user visits and leaves, the current number of visitors can be retained. Static variables can also be used in chat rooms to record user chat content.
Example
In the following example, static variables and ordinary variables are used to output a data at the same time to see the difference between the functions of the two. The code is as follows:
<?php function zdy0(){ static $message = 0; //初始化静态变量 $message+=1; echo $message." "; } function zdy1(){ $message = 0; //初始化静态变量 $message+=1; echo $message." "; } for ($i=0;$i<10;$i++) zdy0(); //输出1~10 echo "<br>"; for ($i=0;$i<10;$i++) zdy1(); //输出10个1 echo "<br>"; ?>
Code running result:
Example details:
The custom function zdy() outputs from 1 to 10 There are 10 numbers in total, and the zdy1() function outputs 10 1., because the custom function zdy() contains the static variable $message, and $message in the function zdy1() is an ordinary variable. Both variables are initialized to 0, and the two functions are called using for loops respectively. As a result, the function zdy() retains the value in the static variable $message after being called. The initialization of static variables is only performed when the function is called for the first time, and will no longer be initialized in the future. After the function zdy1() is called, its variable $message loses its original value and is re-initialized to 0.
Global variables can be accessed anywhere in the program, but inside the user-defined function Cannot be used. If you want the user to use global variables inside a user-defined function, use the global keyword to declare the global variable
Example
The following applies global variables and Global variables should not be used for comparison. In this example, two global variables $zy and $zyy are defined. In the user-defined function lxt(), I hope to call them on lines 5 and 7, but the program output result is only the value of $zyy
"PHP Chinese website" because the global variable $zyy is declared with the global keyword on line 6. There will be no output in line 5, and $zy has nothing to do with $zy in the second line. The example code is as follows:
<?php header("content-type:text/html;charset=utf-8"); $zy="你好"; $zyy="PHP中文网"; function lxt(){ echo $zy."<br>"; //$zy 不能被调用,没有输出 global $zyy; //利用关键字global 在函数内部说明,不说明认为是私有变量 echo $zyy."<br>"; //调用$zyy } lxt(); ?>
Code running result:
This is the difference between applying global variables and not applying global variables. In the next section, we will explain "Variable variables"
Recommended related video tutorials: "php.cn Dugu Jiujian (4)-php video tutorial》Scope of variables
The above is the detailed content of Detailed explanation of PHP variable scope examples. For more information, please follow other related articles on the PHP Chinese website!