Detailed explanation of static variables in PHP
Static variable The type specifier is static. Static variables belong to the static storage method, and their storage space is the static data area in the memory (storage units are allocated in the static storage area). The data in this area always occupies these storage spaces during the entire running period of the program (during the entire running period of the program are not released), it can also be considered that its memory address remains unchanged until the entire program ends (on the contrary, while
auto automatic variables, that is, dynamic local variables, belong to the dynamic storage category, occupy dynamic storage space, and are released after the function call is completed). Although static variables always exist throughout the execution of the program, they cannot be used outside its scope.
In addition, variables belonging to the static storage method are not necessarily static variables. For example: Although external variables (referred to as global variables in PHP) are static storage methods, they are not necessarily static variables. They must be defined by static before they can become static external variables, or static global variables.
All global variables are static variables, and local variables are local static variables only when they are defined with the type modifier static.
Static variables can be applied anywhere. Once the application is successful, it will no longer accept other similar applications.
Static variables do not mean that they cannot change the value. A quantity that cannot change the value is called a constant. The value it holds is mutable, and it will remain up-to-date. It is said to be static because it does not change as the function is called and exits. That is, if we assign a certain value to a static variable the last time the function is called, the value will remain unchanged the next time the function is called.
1. Static local variables:
1. Internal variables of static type are the same as auto automatic variables (that is, local variables without static declaration). They are local variables of a specific function. That is, the variable can only be used within the function in which it is defined. The scope of the two is the same; the difference between the two is that the auto automatic variable will exist and disappear as the function is called and exits, while the static class local variable will not. It will exist regardless of whether the function in which it is located is called; however, although the variable continues to exist, it cannot be used. If the function that defines it is called again, it can continue to be used, and the value left after the previous call is saved. In other words, an internal variable of static type is a variable that can only be used in a specific function, but always occupies storage space.
2. If a static variable is initialized while defining a static variable in the function body, the program will no longer perform initialization operations in the future (the static variable initialization statement of the basic type that appears inside the function will only be initialized on the first call). implement). Assigning initial values to automatic variables is performed when the function is called. Each time the function is called, the initial value is assigned again, which is equivalent to executing an assignment statement.
3. The initialization expression of static local variables must be a constant or constant expression. Even if a local static variable is defined without an initial value, the system will automatically assign an initial value of 0 (for numeric variables) or a null character (for character variables); the initial value of a static variable is 0. For the automatic variable auto, if no initial value is assigned, its value will be an uncertain value.
4. When a function is called multiple times and the values of certain variables are required to be retained between calls, static local variables can be considered. Although global variables can also be used to achieve the above purpose, global variables sometimes cause unexpected side effects (mainly caused by the scope of the variable), so it is still better to use local static variables.
Note: Local static variables take up a long time in memory and have poor readability. Therefore, try to avoid using local static variables unless necessary.
2. Static global variables
The declaration of a global variable (external variable) is preceded by static to constitute a static global variable.
Global variables themselves are static storage methods, and static global variables are of course also static storage methods.
There is no difference between the two in storage methods.
The difference between the two is:
1. The scope of non-static global variables is the entire source program. When a source program consists of multiple source files, the scope of non-static global variables Variables are valid across source files.
2. Static global variables limit their scope, that is, they are only valid within the source file in which the variable is defined, and cannot be used in other source files of the same source program.
It can be seen from the above analysis————
Changing a local variable to a static variable changes its storage method, that is, changes its lifetime.
Changing a global variable to a static variable changes its scope and limits its scope of use. static static variables will be placed in the global storage area of the program (that is, in the global data area of the program, rather than allocated on the stack, so it will not cause stack overflow), so that the original assignment can be maintained the next time it is called. . This is what differentiates it from stack variables and heap variables.
3. Application in PHP
<?php //--------------如何理解static静态变量----------- /** 普通局部变量 */ function local() { $loc = 0; //这样,如果直接不给初值0是错误的。 ++$loc; echo $loc . '<br>'; } local(); //1 local(); //1 local(); //1 echo '===================================<br/>'; /** static静态局部变量 */ function static_local() { static $local = 0 ; //此处可以不赋0值 $local++; echo $local . '<br>'; } static_local(); //1 static_local(); //2 static_local(); //3 //echo $local; 注意虽然静态变量,但是它仍然是局部的,在外不能直接访问的。 echo '=======================================<br>'; /** static静态全局变量(实际上:全局变量本身就是静态存储方式,所有的全局变量都是静态变量) */ function static_global() { global $glo; //此处,可以不赋值0,当然赋值0,后每次调用时其值都为0,每次调用函数得到的值都会是1,但是不能想当然的写上"static"加以修饰,那样是错误的. $glo++; echo $glo . '<br>'; } static_global(); //1 static_global(); //2 static_global(); //3 ?>
Related recommendations:
php: Analysis of the difference between static static variables and ordinary variables
static static variables of PHP
The above is the detailed content of Detailed explanation of static variables in PHP. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.
