Php return несколько значений

Значения в функции возвращаются с помощью оператора return. Оператор return является не обязательным, в случае его отсутствия, функция не возвратит никакого значения.
Функция вида:

Может вернуть только одно значение, при чем переменная $sum за пределами функции не существует.

Если же, Вам нужно вернуть именно переменную $sum сделать это можно, объявив ее глобальной (кстати, возвращение значения return $sum; можно опустить):

Как Вы уже догадались, таким методом можно вернуть более одного значения вложенных в переменные:

Хотя более технически правильным для возврата в одной функции несколько значений делается это с помощью массива:

Кроме значения, функция может, как мы уже знаем, возвращать массивы. Поэтому в функции можно вернуть массив, сформированный в функции:

Почему Вы еще не прокомментировали?
Оставьте свой комментарий! Весь Интернет уже заждался!

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:

function 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.

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.

# (1) Objects are always passed by reference and returned by reference

class 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 . "
" ;

# (2) Scalars are not passed by reference or returned as such

function scalar_inc_x ( $x ) <
$x ++;
return $x ;
>

$x2 = scalar_inc_x ( $x );
scalar_inc_x ( $x2 );

print $x . ‘, ‘ . $x2 . "
" ;

# (3) You have to force pass by reference and return by reference on scalars

$x2 =& scalar_ref_inc_x ( $x ); # Need reference here as well as the function sig
scalar_ref_inc_x ( $x2 );

print $x . ‘, ‘ . $x2 . "
" ;

# (4) Arrays use pass by value sematics just like scalars

function 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’ ] . "
" ;

# (5) You have to force pass by reference and return by reference on arrays

$array = array();
$array [ ‘x’ ] = 1 ;

$array2 =& array_ref_inc_x ( $array ); # Need reference here as well as the function sig
array_ref_inc_x ( $array2 );

print $array [ ‘x’ ] . ‘, ‘ . $array2 [ ‘x’ ] . "
" ;

У меня есть метод в моем классе, который я хочу вернуть более одного значения:

При попытке распечатать значение, подобное этому: echo $lockImage; , Я получаю Undefined variable: lockImage ,

Почему не возвращается значение?

Решение

Вы можете вернуть два или более значения из функции с помощью list() языковая конструкция:

Другие решения

Проблема в том, что вы возвращаете более одной переменной из вашей функции.
Ты не можешь Вы должны назначить массив или список для выполнения этой работы, для этого используйте любой из этих кодов перед завершением вашей функции:

Вы можете вернуть только одну переменную в функцию PHP. Если вам нужно вернуть два, вам нужно использовать массив (или объект).

Вы не можете вернуть две переменные в функцию php:

Вы можете поместить их в массив:

$ lockImage — это переменная внутри метода. Как вы думаете, почему он будет доступен во всем мире? Чтобы было ясно:

не сработает Так должно быть:

Другие ответы указывают на то, что вам нужно правильно вернуть значение. Но я думаю, что вы также не получаете возврат правильно.

Оцените статью
Много толка
Добавить комментарий