Home > Article > Backend Development > How to return multiple values from one PHP function
We mainly use function parameters to obtain external data inside the function for further processing. Similarly, we return values from PHP functions to access processed data outside the function. You can define functions in PHP with or without return values.
Although a function in PHP can have multiple parameters, it is impossible to have multiple return statements. In this tutorial, I will show you how to return multiple values from a function in PHP.
Functions in PHP can have an optional return
statement. When called from within a function, the return statement immediately stops the execution of any further code. This also includes other return statements. Here is an example:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return $x; if($y%3 == 0) { echo "Y is: ".$y; } return $y; } $m = 0; $n = 0; $m = multiple_returns(5, 18); // list($m, $n) = multiple_returns(5, 18); // Outputs: Values are: 10 and 0 echo "Values are: ".$m." and ".$n; ?>
Please note that running the above code will not echo statements about the $y
value. This is because the function stops executing after the first return statement. If we uncomment the line where we use list()
to assign the variable value, both $m
and $n
will be NULL
because list()
only works with arrays, and the function only returns a number.
We know that the return statement can return any type of value. So we can also use this to return an array containing all the values we actually want to return. We can rewrite the above example as follows to return multiple values:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return [$x, $y]; } list($m, $n) = multiple_returns(5, 18); // Outputs: Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
From a PHP perspective, you still return a single value, but that single value is an array that can contain multiple other values. This is one of the simplest ways to simulate a function returning multiple values in PHP.
In the above example, we only return two values. However, when more values are involved, things can get a little tricky because you have to remember the correct order of the returned values.
Starting with PHP 7.1, you can use list()
with associative arrays. This means that the order in which the elements are returned does not affect the assigned value. Here is an example:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return ['m' => $x, 'n' => $y]; } list('m' => $m, 'n' => $n) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; list('n' => $n, 'm' => $m) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
You can see that the variables $m
and $n
get the same value in both cases because the value is now assigned based on the key instead of the numeric index.
Starting with PHP 7.1, you don't even need to use list()
as PHP now supports destructuring syntax. We can rewrite the previous example as:
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return ['m' => $x, 'n' => $y]; } ['m' => $m, 'n' => $n] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ['n' => $n, 'm' => $m] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Another way to return multiple values from a PHP function is to return an object. We can define classes with different properties using public member variables. One disadvantage of this technique is that you have to write more code, so it will consume more memory to store multiple instances of the class. The advantage is that you can use the same set of variables in multiple places.
<?php class ValueStore { public $m; public $n; } function multiple_returns_class($a, $b) { $my_values = new ValueStore(); $my_values->m = 2*$a; $my_values->n = 3*$b; return $my_values; } $values = multiple_returns_class(5, 18); // Values are: 10 and 54 echo "Values are: ".$values->m." and ".$values->n; ?>
As you can see, we can successfully get multiple values from a function simply by creating an object and assigning values to its various properties.
In this tutorial, you learned that PHP does not allow you to return multiple values directly from a function. However, you can work around this limitation by packing multiple values into an array or object. After that you just return the array or object from the function and access the values.
The above is the detailed content of How to return multiple values from one PHP function. For more information, please follow other related articles on the PHP Chinese website!