PHP variable parameter implementation
Editor's note: The first way I thought of was to use arrays, or use macros in C language, but I found on the Internet that PHP has different implementation methods, so I reprinted the article here
First, we need to write a PHP The function to calculate the sum of two numbers can be written as follows:
/** *计算两个数的和,并返回计算的结果 * @param number $a * @param number $b * @return number */ function sum($a, $b){ return $a + $b; }
Similarly, if we need to calculate the sum of three numbers, we can write it as follows:
/** *计算两个或三个数的和,并返回计算的结果 * @param number $a * @param number $b * @return number $c 该参数可以不传入值,默认为0 */ function sum($a, $b, $c =0){ return $a + $b + $c; }
At this time, if we need to calculate the sum of any number, So how do we need to write PHP functions?
Of course, you may consider using an array as the passing parameter of the function to achieve such a function:
/** *计算任意多个数的和,函数参数params必须为array类型 * @param array params */ function sum($params){ $total =0; foreach($params as $i){ $total += $i; } return $total; }
Well, there is indeed nothing wrong with this approach, because in the program development process before the birth of variable parameters, When any number of parameters need to be passed, they are represented by arrays or other similar collections. However, doesn’t this kind of transmission seem clear and intuitive enough? As a PHP programmer, you should know that there is a function var_dump() in PHP for displaying detailed information about variables, for example:
$age =18; var_dump($age);//显示变量$age的详细信息
When we need to display information about multiple variables, we can also use it like this:
$name ='张三'; $age =18; $gender =true; var_dump($name, $age, $gender);
We know that var_dump() can receive any number of variables at the same time, and does not need to be passed in the form of an array. This parameter passing method is more intuitive and elegant. This form of passing any number of parameters is called variable parameters. Of course, our sum() function can also be implemented in this way:
/** *计算任意多个数的和,并返回计算后的结果 */ function sum(){ //这里的括号中没有定义任何参数 $total =0; //使用func_get_args()来获取当前函数的所有实际传递参数,返回值为array类型 $varArray = func_get_args(); foreach($varArray as $var){ $total += $var; } return $total; }
/*****The following is a calling example*****/
echo sum(1,3,5); //计算1+3+5 echo sum(1,2);//计算1+2 echo sum(1,2,3,4); //计算1+2+3+4
As shown in the above example, just use the PHP built-in function func_get_args() in the current function, Then we can get the actual parameter array passed when calling the function, and then we only need to process the parameter array.
Note 1: 1. If no parameters are passed in when called, the function func_get_args() still returns the array type, but is an empty array (the array does not contain any elements). 2.func_get_args() can only be called within a function, otherwise a warning message will be displayed. 3. The func_get_args() function can receive an index parameter to obtain the parameter at the specified index in the parameter array. For example, if you want to get the first argument passed in, you can call: func_get_args(1). 4. In addition, you can also call func_num_args() in the function, which can return the number of parameters passed in the current function call.
Note 2: The implementation of variable parameters in PHP is very similar to the implementation of variable parameters in JavaScript. PHP uses the built-in function func_get_args() to implement it, and JavaScript uses the built-in function variable arguments to implement it.
Note 3: In the final sum() function code, the sum() function does not define any formal parameters, so 0, 1, 2~n parameters can be passed in when calling this function. However, in general, at least two numbers are needed to calculate the sum. Therefore, you can define two formal parameters at the definition of the sum() function, for example: sum($a, $b), and the other code remains unchanged. In this way, when calling this function, you must pass in at least two parameters.
Note 4: Since PHP has a built-in function array_sum() that calculates the sum of all elements in an array, the final version of the above code is as follows:
/** *计算任意多个数的和,并返回计算后的结果 */ function sum($a, $b){ return array_sum(func_get_args()); }
The above introduces the PHP variable parameter implementation, including aspects, I hope it will be helpful to those who are interested in PHP tutorials.
Related articles:
php How to pass each element of the array as an actual parameter of a variable parameter function?
Example code of the difference between JS and PHP in passing variable parameters to functions

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

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

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

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

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.
