Php функция возвращает массив

Php функция возвращает массив

Я хочу вернуть массив из функции, но он ничего не возвращает. Если я объявляю любую строку, которая возвращает штрафы, но мне нужно вернуть.

Я пытался вернуть простой массив, но это тоже не сработало!

Может кто-нибудь помочь узнать, как вернуть массив из функции ??

Решение

Ваш текущий код имеет две проблемы:

  1. Он не возвращает переменную, которая содержит массив. Он возвращает результат функции array_push (), что, вероятно, не то, что вы хотите.
  2. Это только вызов возврата, когда внутри условный. Если условие не сработает, оператор return не встречается. По сути это эквивалентно return null; если условие не срабатывает.

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

Читайте также:  Spore чем заканчивается игра

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

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

Вопрос: Как вытащить этот массив и использовать не только в самой функции?

2 ответа 2

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

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

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

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

Читайте также:  Beyond two souls ютуб

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

Ссылка на основную публикацию
Adblock detector