Table of Contents
PHP’s Anonymous Functions and closure functions
Home Backend Development PHP Tutorial Detailed explanation of anonymous functions and closure functions in PHP

Detailed explanation of anonymous functions and closure functions in PHP

Apr 11, 2018 pm 05:53 PM
php function

The content of this article is to share with you a detailed explanation of anonymous functions and closure functions in PHP. It has a certain reference value. Friends in need can refer to

PHP’s Anonymous Functions and closure functions


#tags: Anonymous function closure function php closure function php anonymous function function use


##Introduction: Anonymous functions and closure functions are not particularly advanced knowledge, but many friends who are just getting started are always confused, because everyone is accustomed to writing functions just for calling them. What are anonymous functions and closure functions used for?

Anonymous functions

php official explanation is as follows:

Anonymous functions (Anonymous functions), also called closure functions (closures), allow temporary creation of a function without a specified name . The value most commonly used as a callback function argument. Of course, there are other applications as well.

What is said here is very simple, it can be used as a callback function. The following example is the

<?php
echo preg_replace_callback(&#39;~-([a-z])~&#39;, function ($match) {
    return strtoupper($match[1]);
}, &#39;hello-world&#39;);
// 输出 helloWorld
?>
Copy after login
used as a callback function

In the above example, the

preg_replace_callback function It requires three parameters. The first parameter is a regular expression used to match data, the second parameter is a function, and the third parameter is the string that needs to be matched. You can also write it like the following

<?php
$testFunc = function ($match) {
        return strtoupper($match[1]);
    };
 
 echo preg_replace_callback(&#39;~-([a-z])~&#39;, $testFunc, &#39;hello-world&#39;);
 // 输出 helloWorld
 ?>
Copy after login

But we see that we only need to use this method once, so there is no need to name it again, and there is no need to assign it to a variable (the process of assigning values ​​to variables: PHP will automatically Convert it into an object instance of the built-in class Closure and assign it to a variable)

Closure function

The anonymous function in php is also called a closure function, so there is no difference. But the concept of closure in the general sense is not like this. Let's first talk about closure in the traditional sense, and provide an article to compare closures in js with closures (anonymous functions) in php.

Learn Javascript closure (Closure) - Ruan Yifeng

There is actually no closure function in the traditional sense in PHP, because functions in PHP cannot call variables in the scope. As shown below

<?php
    function a(){
        $a = 11;        
        function b(){
            $b = 22;            
            echo $a;            
            echo $b;
        }
        b();
    }
    a();
    //报Notice:Undefined variable: a in index.php on line 6
    //22
    ?>
Copy after login

Looking at the above article, we know that it is possible in js. Therefore, anonymous functions in PHP are also called closure functions. You can also pass variables from the parent scope into the closure function (achieving an effect similar to js obtaining parent scope variables). The use keyword is used in PHP, as follows

<?php
$count = 0;

$a = function()
{ var_dump($count); };

$b = function() use ($count)
{ var_dump($count); };

$count++;

$c = function() use (&$count)
{ var_dump($count); };

$count++;

$a();    // null   Notice: Undefined variable: count in
$b();    // int 0
$c();    // int 2
$count++;
$b();    // int 0

?>
Copy after login

Is the output of the above example different from what you think?

Analysis: The closure function (anonymous function) uses use to obtain the side effect domain variable when the function is defined, no matter when it is called. If you want to get the variable value when calling, you need to pass it by reference. How to use it depends on the usage scenario.

Lists several common scenarios

  1. As a callback function

    //一个我们使用过的例子
    <?php/*
     * 菜谱拆分食物后的拼接
     * 参数均不能为空
     * */public function mergeFoodsStr($str,array $mapping){
     //        $str = &#39;白菜半棵、__2__鲍菇两只、__0__一根,__1__两根,三者比例为100:100:15,酱油5克,香油2克,盐1克。&#39;;//        $mapping = array(//            0 =>array(&#39;name&#39; => &#39;胡萝卜&#39;,&#39;id&#39; =>  &#39;81&#39; ),//            1 =>array ( &#39;name&#39; => &#39;萝卜&#39;, &#39;id&#39; =>  &#39;72&#39;),//            2 =>array ( &#39;name&#39; =>  &#39;杏&#39;, &#39;id&#39; => &#39;1841&#39;)//        );
        if(empty($str) || empty($mapping)){        return false;
        }    $strNew = preg_replace_callback(&#39;"|__(\d)__|" &#39;,function ($matches) use ($mapping){
            return $mapping[$matches[1]][&#39;name&#39;];
        },$str);    $this->log(&#39;拼接后的食材字符串&#39;,$strNew);    return $strNew;
    }?>
    Copy after login

  2. ## If it is a one-time use function that cannot be reused, you can use the closure function

  3. Use the array_work() function with the anonymous function to reduce the number of foreach layers
  4. etc
  5. The above is the detailed content of Detailed explanation of anonymous functions and closure functions in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1669
14
PHP Tutorial
1273
29
C# Tutorial
1256
24
PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

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 vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

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 in Action: Real-World Examples and Applications PHP in Action: Real-World Examples and Applications Apr 14, 2025 am 12:19 AM

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.

The Enduring Relevance of PHP: Is It Still Alive? The Enduring Relevance of PHP: Is It Still Alive? Apr 14, 2025 am 12:12 AM

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.

PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP vs. Other Languages: A Comparison PHP vs. Other Languages: A Comparison Apr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

See all articles