Php вернуть значение массива

Php вернуть значение массива

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

Замечание:

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

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

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

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

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

function small_numbers ()
return [ 0 , 1 , 2 ];
>
// Деструктуризация массива будет собирать каждый элемент массива индивидуально
[ $zero , $one , $two ] = small_numbers ();

// До версии 7.1.0 единственной эквивалентной альтернативой было использование конструкции list().
list( $zero , $one , $two ) = small_numbers ();

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

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

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

Источник

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

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

Замечание:

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

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

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

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

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

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

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

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

Читайте также:  first-letter

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

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

В 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 стоит перед Вишней и до нее очередь не успевает дойти.

Читайте также:  Lk dbo rshb ru html login html

Если с выводом обычных переменных нет никаких сложностей, то вот с выводом массивов за счет 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?

Есть функция parseDesc() . В результате ее выполнения получается массив $productDesc[] . Вопрос: Как вытащить этот массив и использовать не только в самой функции?

2 ответа 2

Чтобы вернуть результат работы функции, необходимо использовать оператор return .

После этого можно будет присвоить результат работы функции переменной.

function parseDesc() < return []; >$productDesc = parseDesc(); 

Уважаемый @Egor Smolyakov На ваш вопрос ответил @Ипатьев и это половина ответа. Этот ответ абсолютно верен, если результат вашей функции это генерировать массив $productDesc Но если у вас функция выполняет другую задачу, а генерация массива побочное действие, то вам скорее всего придется изменять формат выводимых данных

function parseDesc() < return ['result'=>$result,'arr'=>$productDesc]; > $productDesc = parseDesc(); $productDesc = productDesc['arr']; 

Либо использовать ссылку в функции, что чревато ошибками при повторном вызове функции

$productDesc=[] function parseDesc()

Но я на стадии проектировании выбираю — либо это функция выполняющая конкретно возложенное на нее обязательство, либо сущность с характерными для нее свойствами

class ParseDesc< protected $product_desc=[]; public function doParse()< $this->product_desc=$a; return $result; > public function getProductDesc()< return $this->product_desc; > > 
$obj= new ParseDesc(); $parser_result=$obj->doParse(); $productDesc=$obj->getProductDesc(); 

Источник

Читайте также:  OpenFile test

how can i return an array

Just return $array, it already holds the right values. There’s nothing in PHP stopping you from returning data of any type you want.

you can use arrays in php like any other variable:

function return_an_array() < return array( 1 =>array('id' => '12','name' => 'Great man'), 2 => array('id' => '14','name' => 'Lamborgini'), 3 => array('id' => '29','name' => 'Leon'), ); > $my_array = return_an_array(); 

you can use $array like any PHP var.

foreach($array as $value) < // now use $value['id'] or $value['name']; // sample: echo 'ID: '.$value['id'].'
'; echo 'NAME: '.$value['name'].'
'; >
$great_man = $array[1]; echo 'id: '.$great_man['id'].' name: '.$great_man['name']; 

When you say return an array, I think you might mean access an array?

$array = array( 1 => array('id' => '12','name' => 'Great man'), 2 => array('id' => '14','name' => 'Lamborgini'), 3 => array('id' => '29','name' => 'Leon'), ); echo $array[1]['id']; // 12 echo $array[1]['name']; // Great Man echo $array[3]['name']; // Leon 

I think what the OP is wanting, is to use the id of each element as the key. A simple enough thing to achieve.

So, instead of your original code of:

$array = array( 1 => array('id' => '12','name' => 'Great man'), 2 => array('id' => '14','name' => 'Lamborgini'), 3 => array('id' => '29','name' => 'Leon'), ); 
$array = array( 12 => 'Great man' , 14 => 'Lamborgini' , 29 => 'Leon' ); 

NOTE: The Array Keys do not have to be sequential, but they do need to be unique, within that array. They can also be either integers or strings.

Источник

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