В php можно создавать функции, которые что-то вычисляют, но при выводе результата, могут возникнуть сложности. Чаще всего для возврата вычислений используется консрукция return. Рассмотрим ее подробнее.
Если в функции установлен return, то когда до него дойдет очередь, функция прекратит все вычисления и сделает возврат значений с помощью этой конструкции.
Если return будет установлен где-нибудь вне функции, то он будет считаться глобальным и когда до него дойдет очередь, скрипт также прекратит работу и выдаст результат.
Особенность return в том, что после завершения работы функции, результат вычислений выведется в той строке, где была вызвана эта функция.
Теперь от теории к практике
function returns1($a) {
return $a;
echo 'Вишня';
}
echo returns1('Яблоко');
В этом примере выведется только Яблоко, так как return стоит перед Вишней и до нее очередь не успевает дойти.
Если с выводом обычных переменных нет никаких сложностей, то вот с выводом массивов за счет return могут быть проблемы.
Как вывести массив из return в php?
К примеру есть функция data($a,$b) в ней будет передавать исходные данные $a и $b. Функция их вычислит, а на выходе мы должны получить массив из 3 значений с помощью return. Делается это так:
<?php
//здесь мы задали обычную функция с параметрами
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 их нужно соединить в один массив:
<?php
//какая-то функция
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. Надеюсь, материал был полезен.