Php functions returning arrays

PHP Returning values

A function can have return as last statement in its body although it is not mandatory. When a function is called, control of program come back to calling environment after executing statements in its body block — irrespective of whether last statement in function block is return or not. In absence of retun statement, control returns NULL value to caller. If return statement consistes of an expression clause, value of expression is returned. Function can return only one value which may be of scalar type, array, or an object. Returned value may be assigned to some variable for subsequent processing

function with return

In following example, a function returns sum of two integers passed as argument

Example

 $x=10; $y=20; $z=add($x,$y); echo "addition=$z"; ?>

Output

This will produce following result. −

Returning array

Function can return only one value. However, array of multiple values can be returned. Following example passes two numbers to a function that returns array of addition, subtraction, multiplication and division

Example

$r1,"sub"=>$r2,"multiply"=>$r3,"division"=>$r4); > $x=10; $y=20; $arr=result($x,$y); foreach ($arr as $k=>$v)< echo $k . "->" . $v . "
"; > ?>

Output

This will produce following result. −

add->30 sub->-10 multiply->200 division->0.5

Return by reference

Just as arguments can be passed by reference, a function can return by reference also. For that purpose, function’s name must be prefixed by $ symbol. Further, & symbol must also be given in function call

Читайте также:  Non break space in html

In following example, myfunction() has a static array. One of its elements is returned by reference and is accepted in a variable. Value of variable is then modified and same function is called again. Array in the function should now show its value changed.

Example

 echo "
"; return $arr[2]; > $var=&myfunction(); echo "returned by reference : $var
"; $var=100; $var=&myfunction(); ?>

Output

This will produce following result. −

array elements: 1 2 3 4 5 returned by reference : 3 array elements: 1 2 100 4 5

Values of variables $x and $y are interchanged in swap() function. Since, variables are passed by reference, the variables show modified values outside the function too

return type hints (return Type declarations)

From PHP 7 onwards, you can specify type hints for returned variable/object, just as it is possible to declare type for arguments. For return type also all scalar types, class and array can be used

Syntax

//define a function with type hints for return value function myfunction($arg1, $arg2): type

All standard PHP data types including scalar types, array, class/interface, iterable and object are valid types for providing type hints for return variable in a function declaration

Example

Output

This will produce following result. −

Use of declare statement with strict_types=1 will prevent coercion of data types

Example

Output

This will now throw exception as follows −

PHP Fatal error: Uncaught TypeError: Return value of add() must be of the type integer, float returned

Источник

Возврат значений

Значения возвращаются при помощи необязательного оператора возврата. Возвращаемые значения могут быть любого типа, в том числе это могут быть массивы и объекты. Возврат приводит к завершению выполнения функции и передаче управления обратно к той строке кода, в которой данная функция была вызвана. Для получения более детальной информации ознакомьтесь с описанием return .

Замечание:

Если конструкция return не указана, то функция вернет значение NULL .

Использование выражения return

Пример #1 Использование конструкции return

Функция не может возвращать несколько значений, но аналогичного результата можно добиться, возвращая массив.

Пример #2 Возврат нескольких значений в виде массива

function small_numbers ()
return array ( 0 , 1 , 2 );
>
list ( $zero , $one , $two ) = small_numbers ();
?>

Для того, чтобы функция возвращала результат по ссылке, вам необходимо использовать оператор & и при описании функции, и при присвоении переменной возвращаемого значения:

Пример #3 Возврат результата по ссылке

Для получения более детальной информации о ссылках обратитесь к разделу документации Подробно о ссылках.

Объявление типов возвращаемых значений

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

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

Замечание:

Если переопределяется родительский метод, возвращаемое значение дочернего метода должно быть того же типа, что и родительского. Если в родительском методе не задан тип возвращаемого значения, то и дочерний метод этот тип может не объявлять.

Примеры

Пример #4 Обычное объявление типа возвращаемого значения

// Будет возвращаться значение типа float.
var_dump ( sum ( 1 , 2 ));
?>

Результат выполнения данного примера:

Пример #5 То же в режиме строгой типизации

function sum ( $a , $b ): int return $a + $b ;
>

var_dump ( sum ( 1 , 2 ));
var_dump ( sum ( 1 , 2.5 ));
?>

Результат выполнения данного примера:

int(3) Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5 Stack trace: #0 -(9): sum(1, 2.5) #1 thrown in - on line 5

Пример #6 Возврат объектов

function getC (): C return new C ;
>

Результат выполнения данного примера:

Источник

Возврат значений из функций php return. Как возвратить массива из php функции за счет return

В php можно создавать функции, которые что-то вычисляют, но при выводе результата, могут возникнуть сложности. Чаще всего для возврата вычислений используется консрукция return. Рассмотрим ее подробнее.

Если в функции установлен return, то когда до него дойдет очередь, функция прекратит все вычисления и сделает возврат значений с помощью этой конструкции.

Если return будет установлен где-нибудь вне функции, то он будет считаться глобальным и когда до него дойдет очередь, скрипт также прекратит работу и выдаст результат.

Особенность return в том, что после завершения работы функции, результат вычислений выведется в той строке, где была вызвана эта функция.

Теперь от теории к практике

function returns1($a) return $a;
echo ‘Вишня’;
>
echo returns1(‘Яблоко’);

В этом примере выведется только Яблоко, так как return стоит перед Вишней и до нее очередь не успевает дойти.

Если с выводом обычных переменных нет никаких сложностей, то вот с выводом массивов за счет return могут быть проблемы.

Как вывести массив из return в php?

К примеру есть функция data($a,$b) в ней будет передавать исходные данные $a и $b. Функция их вычислит, а на выходе мы должны получить массив из 3 значений с помощью return. Делается это так:

//здесь мы задали обычную функция с параметрами
function data($a,$b) //делаем простые вычисления. Не важно какие, главное, что формируется массив $out, который нам надо вывести из return
$out[‘a’] = $a*5;
$out[‘b’] = $b*5;
$out[‘c’] = $a*$b*5;
//после того, как мы сформировали массив, просто выводим его
return $out;
>

//исходные данные
$a = 2; $b = 3;
//теперь присваиваем $data значение функции (return $out)
$data = data($a,$b);
//$data стал массивом, просто выводим там где нужно результат функции: Array ( [a] => 10 [b] => 15 [c] => 30 )
echo $data[‘a’];
echo $data[‘b’];
echo $data[‘c’];
?>

2 вариант. А что если в процесс работы функции нам на выходе нужно получить два и более разных массива. Как их вывести через return? Для этого перед return их нужно соединить в один массив:

//какая-то функция
function datare($a,$b) //данные 1-го массива
$out[] = $a;
$out[] = $b;
$out[] = «Ура»;
//данные 2-го массива
$out2[‘a2’] = $b;
$out2[‘b2’] = ‘Желаю ‘;
$out2[‘c2’] = «Вам»;
//выводим результат двух массивов в массиве
$all = array($out, $out2);
return $all;
>

$a = ‘Азбука ‘; $b = ‘Здоровья ‘;
//запускаем функцию datare с параметрами и присваиваем ей переменную $massiv. Теперь $massiv — массив.
$massiv = datare($a,$b);

//выводим результаты расчетов функции.
print_r($massiv);
echo $massiv[0][0];
echo $massiv[0][1];
echo $massiv[0][2];
echo $massiv[1][‘a2’];
echo $massiv[1][‘b2’];
echo $massiv[1][‘c2’];
/*
На выходе получим:
Array (
[0] => Array ( [0] => Азбука [1] => Здоровья [2] => Ура )
[1] => Array ( [a2] => Здоровья [b2] => Желаю [c2] => Вам )
)
*/
?>

В принципе таким образом, и работает return в php. Надеюсь, материал был полезен.

Источник

Как создать PHP-функцию с множественными возвратами

Как создать PHP-функцию с множественными возвратами

  1. PHP массив для возврата нескольких значений
  2. Функция PHP с условным динамическим возвратом
  3. Комбинация массива PHP и динамического возврата условия
  4. PHP generator к yield множественным значениям

Функция PHP — это многократно используемый блок операторов, который позволяет нам иметь возврат, будучи простой строкой, массивом или JSON-объектом. Но нельзя иметь более одного возврата. Хотя вы можете использовать массив, создавать условный оператор для возврата динамической переменной или использовать генераторы (для PHP 5.5 и выше)..

PHP массив для возврата нескольких значений

funtion arrayFunc()  $var1 = "return 1";  $var2 = "return 2";   return array($var1, $var2); > 
$result = arrayFunc(); var_dump($result); //output: array(2) < [0]=>string(8) "return 1" [1]=> string(8) "return 2" > 

Функция выше может иметь несколько возвратов в виде массива, доступ к которому можно получить с помощью:

$result = arrayFunc(); echo $result[0]; // return 1  echo $result[1]; // return 2 

Начиная с версии PHP 7.1, появилась новая функция destructuring для списков. Это означает, что можно делать такие вещи:

$array = ['dog', 'cat', 'horse', 'fish']; [$q, $w, $e, $r] = $array;  echo $q; // output: dog  echo $w; // output: cat 

Применение в функции будет выглядеть следующим образом:

function descructingFunction()  return ['A', 'sample', 'descructing', 'function']; > [$a, $b, $c, $d] = descructingFunction();  echo $a; //output: A  echo $d; // output: function 

Функция PHP с условным динамическим возвратом

function condFunc($x = true)  $ret1 = "One";  $ret2 = "Two";   if($x == true)  return $ret1;  >else  return $ret2;  > > 
echo condFunc(true); //output: One 

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

Комбинация массива PHP и динамического возврата условия

Немного изменив функцию, можно иметь возможность возврата массива или динамического возврата.

function combination($x = true)  $ret1 = "One";  $ret2 = "Two";   if($x === true)  return $ret2;  >  if($x == "both")  return array($ret1, $ret2);  > >  echo combination(); //output: Two  var_dump(combination("both")) //output: array(2) < [0]=>string(8) "return 1" [1]=> string(8) "return 2" > 

Использование такого подхода позволит сделать функцию более гибкой.

PHP generator к yield множественным значениям

Функция генератор не возвращает значение, она показывает столько значений, сколько необходимо. Она возвращает объект, который может быть итераризован.

function multipleValues()  yield "return 1";  yield "return 2"; >  $return = multipleValues(); foreach($return as $ret)  echo $ret; //$ret first value is "return 1" then "return 2"  > 

Note: Ключевым словом к генератору является yield . Она действует как return к оператору функции, но не останавливает выполнение и не возвращает, а предоставляет значение в цикле кода.

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

Источник

Оцените статью