PHP: возврат значения без прекращения выполнения скрипта?

Есть ли способ вернуть данные с помощью PHP без завершения выполнения скрипта return()?


person Reado    schedule 25.10.2011    source источник
comment
return не завершает выполнение скрипта, а выходит из функции. Если вы думаете о том, чтобы получить значение на полпути к функции и загрузить его в ту часть кода, которая вызывает эту конкретную функцию, то нет, это невозможно и бессмысленно.   -  person N.B.    schedule 25.10.2011
comment
Почему вы хотите сделать что-то подобное?   -  person Tobias Golbs    schedule 25.10.2011
comment
С каких это пор return когда-либо прерывал выполнение скрипта?   -  person BoltClock    schedule 25.10.2011
comment
попробуйте echoing из середины этой функции   -  person k102    schedule 25.10.2011
comment
@BoltClock: возможно, когда вы используете его вне функции ;-)   -  person RageZ    schedule 25.10.2011
comment
@BoltClock: If called from within a function, the return() statement immediately ends execution of the current function, and returns its argument as the value of the function call. return() will also end the execution of an eval() statement or script file.   -  person RageZ    schedule 25.10.2011
comment
Если я правильно понимаю вопрос, то GLOBALS может помочь...   -  person evotopid    schedule 25.10.2011
comment
Возможно, вы пытаетесь сделать слишком много в одной функции. Взгляните на то, что вы пытаетесь сделать, выполняет ли это одну функцию? Возможно, вам лучше подойдут две функции: getWhatINeed() и useItToDoSomething(); Функции должны быть небольшими/повторно используемыми, что помогает писать меньше кода.   -  person Kurt Funai    schedule 25.10.2011
comment
@лео Глобалс? не могли бы вы уточнить?   -  person Damien Pirsy    schedule 25.10.2011
comment
Если вы действительно хотите вернуть более одного значения из функции, вы можете вернуть массив значений. По сравнению с глобальными переменными недостатком является то, что у вас не будет доступа к значениям, пока функция не вернет их. Честно говоря, есть вероятность, что если вам нужно рассмотреть возможность использования глобальных переменных, то, вероятно, есть лучший способ структурировать ваш код, как упоминалось выше.   -  person Nathan Lippi    schedule 25.10.2011


Ответы (2)


Боюсь, что нет, цель return состоит в том, чтобы вернуть значение из функции. Однако вы можете временно сохранить возвращаемое значение и вернуть его в конце

function myFunc() {
    $retValue = "";
    //doe some stuff and at some point have $retValue = aValue
    return $retValue;
}
person Joey Ciechanowicz    schedule 25.10.2011

Можно решить проблему другим способом:

Если у вас есть функция:

function myFunction ( $input )
{
    $var1 = $input + 5;
    $var2 = $input + 10;

    $GLOBALS['var1'] = $var1;
    $GLOBALS['var2'] = $var2;

    return null;
}

Тогда вы можете использовать его следующим образом:

myFunction(5);
echo $GLOBALS['var1'];
echo $GLOBALS['var2'];

Но обратите внимание, что это просто решение для вас, если вы не можете вместо этого вернуть массив, потому что это может привести к конфликтам с некоторыми сторонними библиотеками, если вы используете тот же ключ $GLOBALS.

person evotopid    schedule 25.10.2011