Home  >  Article  >  Backend Development  >  How to return multiple values ​​from one PHP function

How to return multiple values ​​from one PHP function

PHPz
PHPzOriginal
2023-08-27 14:05:111864browse

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.

  • Return statement in PHP
  • Use an array to return multiple values
  • Use objects to return multiple values

Return statement 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.

Using an array to return multiple values

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;

?>

Using an object to return multiple values

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.

Final Thoughts

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!

Statement:
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