Returning values

Values are returned by using the optional return statement. Any type may be returned, including arrays and objects. This causes the function to end its execution immediately and pass control back to the line from which it was called. See return for more information.

Зауваження:

If the return is omitted the value null will be returned.

Use of return

Приклад #1 Use of return

<?php
function square($num)
{
return
$num * $num;
}
echo
square(4); // outputs '16'.
?>

A function can not return multiple values, but similar results can be obtained by returning an array.

Приклад #2 Returning an array to get multiple values

<?php
function small_numbers()
{
return [
0, 1, 2];
}
// Array destructuring will collect each member of the array individually
[$zero, $one, $two] = small_numbers();

// Prior to 7.1.0, the only equivalent alternative is using list() construct
list($zero, $one, $two) = small_numbers();

?>

To return a reference from a function, use the reference operator & in both the function declaration and when assigning the returned value to a variable:

Приклад #3 Returning a reference from a function

<?php
function &returns_reference()
{
return
$someref;
}

$newref =& returns_reference();
?>

For more information on references, please check out References Explained.

add a note

User Contributed Notes 4 notes

up
21
ryan dot jentzsch at gmail dot com
8 years ago
PHP 7.1 allows for void and null return types by preceding the type declaration with a ? -- (e.g. function canReturnNullorString(): ?string) However resource is not allowed as a return type:<?phpfunction fileOpen(string $fileName, string $mode): resource{    $handle = fopen($fileName, $mode);    if ($handle !== false)    {        return $handle;    }}$resourceHandle = fileOpen("myfile.txt", "r");?>Errors with:Fatal error: Uncaught TypeError: Return value of fileOpen() must be an instance of resource, resource returned.
up
21
rstaveley at seseit dot com
14 years ago
Developers with a C background may expect pass by reference semantics for arrays. It may be surprising that  pass by value is used for arrays just like scalars. Objects are implicitly passed by reference.<?php# (1) Objects are always passed by reference and returned by referenceclass Obj {    public $x;}function obj_inc_x($obj) {    $obj->x++;    return $obj;}$obj = new Obj();$obj->x = 1;$obj2 = obj_inc_x($obj);obj_inc_x($obj2);print $obj->x . ', ' . $obj2->x . "\n";# (2) Scalars are not passed by reference or returned as suchfunction scalar_inc_x($x) {    $x++;    return $x;}$x = 1;$x2 = scalar_inc_x($x);scalar_inc_x($x2);print $x . ', ' . $x2 . "\n";# (3) You have to force pass by reference and return by reference on scalarsfunction &scalar_ref_inc_x(&$x) {    $x++;    return $x;}$x = 1;$x2 =& scalar_ref_inc_x($x);    # Need reference here as well as the function sigscalar_ref_inc_x($x2);print $x . ', ' . $x2 . "\n";# (4) Arrays use pass by value sematics just like scalarsfunction array_inc_x($array) {    $array{'x'}++;    return $array;}$array = array();$array['x'] = 1;$array2 = array_inc_x($array);array_inc_x($array2);print $array['x'] . ', ' . $array2['x'] . "\n";# (5) You have to force pass by reference and return by reference on arraysfunction &array_ref_inc_x(&$array) {    $array{'x'}++;    return $array;}$array = array();$array['x'] = 1;$array2 =& array_ref_inc_x($array); # Need reference here as well as the function sigarray_ref_inc_x($array2);print $array['x'] . ', ' . $array2['x'] . "\n";
up
11
bgalloway at citycarshare dot org
17 years ago
Be careful about using "do this thing or die()" logic in your return lines.  It doesn't work as you'd expect:<?phpfunction myfunc1() {    return('thingy' or die('otherthingy'));}function myfunc2() {    return 'thingy' or die('otherthingy');}function myfunc3() {    return('thingy') or die('otherthingy');}function myfunc4() {    return 'thingy' or 'otherthingy';}function myfunc5() {    $x = 'thingy' or 'otherthingy'; return $x;}echo myfunc1(). "\n". myfunc2(). "\n". myfunc3(). "\n". myfunc4(). "\n". myfunc5(). "\n";?>Only myfunc5() returns 'thingy' - the rest return 1.
up
9
nick at itomic.com
22 years ago
Functions which return references, may return a NULL value. This is inconsistent with the fact that function parameters passed by reference can't be passed as NULL (or in fact anything which isnt a variable).i.e.<?phpfunction &testRet(){    return NULL;}if (testRet() === NULL){    echo "NULL";}?>parses fine and echoes NULL
To Top