2013-04-02 2 views
-3

Я не понимаю, как упорядочивание работает при использовании функции внутри функции.Заказ функций определения пользователем внутри другой функции определения пользователя PHP

function funcChild(){ 
    echo "Sparta"; 
} 

function funcMain($panic){ 
    echo "This is $panic"; 
} 



funcMain(funcChild()); 

Он выводит:

SpartaThis is 

Я просто хочу его вывести "Это Спарта".

+0

изменить funcChild для возврата вместо echo; или вызвать funcChild с буферизацией вывода, а затем передать это значение буфера funcMain –

ответ

1

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

+0

Могу ли я одолжить вам глаза? – Ihsan

+0

Боюсь, что я нуждаюсь в них сам. : P – deceze

+0

Legit и понятно ...: D – Ihsan

1

echo и return не являются эквивалентными. Когда вы что-то повторяете, он сразу же печатается, а не где-либо хранится. Когда ваш код выполняется, funcChild() выполняется первым, потому что funcMain() пытается использовать его в качестве параметра. funcChild() эхо «Спарта» на экран, а затем ничего не возвращает funcMain(). Это означает, что funcMain() работает без ввода.

Изменение echo "Sparta" в return "Sparta"

function funcChild(){ 
    return "Sparta"; 
} 

function funcMain($panic){ 
    echo "This is $panic"; 
} 

funcMain(funcChild()); 
0
function funcChild(){ 
    return "Sparta"; 
} 

function funcMain($panic){ 
    echo "This is $panic"; 
} 



funcMain(funcChild()); 
0

Это как математика, она начинается изнутри, вы должны произвести возврат, а не прямой печати

function funcChild(){ 
    return "Sparta"; // return ... not direct print! 
} 

function funcMain($panic){ 
    echo "This is $panic"; 
} 



funcMain(funcChild()); 
0

Почему бы не изменить ваш код:

function funcMain($panic) { 
    echo "This is $panic"; 
} 

и будет сделано? Я не вижу причин, по которым вы захотите или будете делать то, что вы пытаетесь сделать. Тем не менее, причина, по которой вы получаете результаты, которые вы получаете, заключается в том, что вызов funcChild происходит как аргумент funcMain. Поэтому funcChild выполняется сначала, а затем выполняется funcMain.

Если вам абсолютно необходимо делать то, что вы пытаетесь, то funcChild (funcMain()) должен быть как это сделать.

Смежные вопросы