Php не работает return function

Почему не работает return?

Почему не работает return? На экран будет выведено 10, а не 20(как задумано.

И еще: можно ли решить эту задачу без использования return внутри функции?

  • Вопрос задан более трёх лет назад
  • 745 просмотров

Почему не работает return? На экран будет выведено 10, а не 20(как задумано.

потому что Вы и не выводите результат функции, Вы выводите значение переменной $a, а результат выполнения можно вывести например так:
echo my_func($a);

И еще: можно ли решить эту задачу без использования return внутри функции?

Нужно передавать аргумент по ссылке:

Почему не работает return? На экран будет выведено 10, а не 20(как задумано.

1.
my_func($a) — вы просто вызвали функцию, в которую передали аргумент. Ее результат, который возвратится по return вы тут не используете, поэтому $a у вас не меняется.
Нужно
$a=my_func($a);

2. Не нужно называть переменные однобуквенно — будете сами путаться как только их будет в программе штук 10-20. Пишите так

Источник

Php не работает return function

(PHP 4, PHP 5, PHP 7, PHP 8)

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

Если вызывается из функции, выражение return немедленно прекращает выполнение текущей функции и возвращает свой аргумент как значение данной функции. return также завершит выполнение выражения eval() или всего файла скрипта.

Если вызывается из глобальной области видимости, выполнение текущего файла скрипта прекращается. Если текущий файл скрипта был подключён с помощью функций include или require , тогда управление возвращается к файлу, который вызывал текущий. Более того, если текущий файл скрипта был подключён с помощью include , тогда значение переданное return будет возвращено в качестве значения вызова include . Если return вызывается из главного файла скрипта, тогда выполнение скрипта прекращается. Если текущий файл скрипта был вызван конфигурационными опциями auto_prepend_file или auto_append_file из файла настроек php.ini , тогда выполнение этого скрипта прекращается.

Для более детальной информации смотрите раздел Возвращаемые значения.

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

Замечание: Если параметры не указаны, тогда круглые скобки должны быть опущены и будет возвращён null . Вызов return со скобками, но без аргументов вызовет синтаксическую ошибку.

Начиная с PHP 7.1.0, операторы возврата без аргумента вызывают E_COMPILE_ERROR , если только тип возврата не void , в этом случае такую же ошибку вызывают операторы возврата с аргументом.

Источник

Php не работает return function

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

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

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

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

Пример использования конструкции return для возврата значений типа integer:

function retfunct ()
<
return 7 ;
>
echo retfunct (); // выводит ‘7’.
?>

Пример возврата конструкцией return массивов:

php
function numbers ()
<
return array ( 0 , 1 , 2 );
>
list ($ zero , $ one , $ two ) = numbers ();
echo $ zero ;
echo $ one ;
echo $ two ;
// Выводит ‘012’
?>

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

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

declare( strict_types = 1 );

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

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

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

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

function getC (): C <
return new C ;
>

Источник

Возвращаемая переменная не работает в PHP (т.е. значение не возвращается!)

Я предпочитаю программировать на языке Python, но должен работать на PHP для конкретного проекта приложения веб-сайта.

В PHP я пытаюсь «вернуть» значение из функции в основную программную среду (которая будет использоваться для последующих вычислений), но независимо от того, что я пытаюсь, значение, вычисленное в моей функции, не возвращает значение (а выводится из функции работает отлично).

В Python у меня никогда не возникало проблем с возвратом переменных: все значения, возвращаемые функциями, были доступны и доступны основной программе и / или другим функциям, которые вызвали функцию, которая возвращает значение.

Может кто-нибудь сказать, пожалуйста, как я могу решить эту проблему? Я искал в Google и на сайтах ike stackoverflow последние 2 дня безуспешно. У меня есть много компьютерных книг О’Рейли, в том числе множество по PHP, где я перекрестно ссылаюсь на свои исследования и читаю все, что могу о функции RETURN — кажется, я все делаю правильно и даже специально объявляю возвращаемое значение. Крайне важно, чтобы я мог возвращать значения и иметь доступ к этим значениям для продолжения разработки этого проекта — иначе я застрял, если не могу вернуть значения для дальнейшей обработки !!

Вот соответствующие фрагменты кода:

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

Я ожидаю, что программа вызовет функцию Calculation_IsArray () и передаст ей проверяемый массив ($ ArrayOfValues). Из выходных данных ниже видно, что массив передается, проверяется и подтверждается, что он имеет тип массива, и что цикл FOREACH, а также условия IF / ELSE работают нормально и отражают правильный вывод. Однако приведенный выше код не возвращает никаких значений, так как вы можете видеть значения NULL, которые отображаются, когда я проверяю возвращаемые значения (т. Е. Тот массив, который был проверен), доступный из основной программы после «возврата».

И вот результаты, отраженные на экране браузера (вывод):

ЭТО VAR ЯВЛЯЕТСЯ

VALUE OF $ Var_IsArray =

COUNT OF ARRAY KEY ELEMENTS = 2

КЛЮЧЕВЫЕ ЭЛЕМЕНТЫ ARRAY ЧИСЛЕННЫЕ

KEY = 0, VALUE = Array

COUNT OF ARRAY КЛЮЧЕВЫЕ ЭЛЕМЕНТЫ = 2

КЛЮЧЕВЫЕ ЭЛЕМЕНТЫ ARRAY ЧИСЛЕННЫЕ

KEY = 1, VALUE = Array

Я искал здесь в stackoverflow и нашел отчеты о похожих проблемах (и я даже пытался проверить эти предложения для решений, например, помещая return в различных местах в моей функции, чтобы проверить, где это будет работать), но ничего не работает, и эта ошибка возвращаемое значение не является логичным в соответствии с тем, что я прочитал, что PHP возвращает значения, если экспликация говорит RETURN.

Большое спасибо за любую помощь в этом вопросе!

[После представления оригинального вопроса выше]:

Сейчас я пытаюсь изолировать свою проблему, создав тестовый скрипт с именем TestReturn.php.

В этом сценарии я поместил следующий код, но все равно значение не возвращается !!

А вот вывод в HTML на вкладку браузера / окно / терминал:

ЭТО VAR ЯВЛЯЕТСЯ

ЗДЕСЬ ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ И VAR_DUMP НИЖЕ:

«Капитан, это не вычисление!», То есть для меня не имеет смысла, почему PHP не возвращает мое значение, что я специально говорю ему возвращаться в основную программу!

Я перепробовал все возможности кодирования, в том числе:

Почему PHP не возвращает мое значение / переменную обратно в основную программу?

Решение

Когда вы возвращаете что-то из функции, она не делает саму переменную доступной в вызывающей области (т.е. вне функции). Другими словами, $Var_IsArray существует только внутри функция.

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

В этом примере $somedata в конечном итоге будет содержать массив, который ранее был сохранен в $vals ,

Это стандартное поведение для операторов возврата (или эквивалентной функциональности) в большинстве языков программирования. Есть и другие способы получить переменные из функции, например, с помощью глобальных переменных. Как правило, они не очень хорошая практика.

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

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

Вы можете упростить функцию до следующего, чтобы она всегда возвращала что-то (true, false)

Источник

Читайте также:  Эур солярис не работает
Оцените статью