Возврат переменной из функции в php (возврат не работает)

Я создаю XML-страницу внутри функции, и по какой-то странной причине я не получаю, чтобы все это выплевывалось из функции. я пробовал

return $thisXml; } echo $thisXML; 

и я получаю только объявление xml, которое находится в переменной перед функцией. Если я поставлю эхо в функции, я все верну, как должен.

моя страница по существу выглядит так

 $thisXml = 'xml declaration stuff'; function getThisXML($thisXML){ for(i=1; i<5; i++){ $query "has the 5 in it"; while ($mysqlQuery =mysql_fetch_array($theQuery) { $thisXml.='add the xml'; } $thisXml.='close the last element'; return $thisXml; } echo $thisXml; 

как я сказал, если я заменил «return» на «echo», я получаю весь хороший xml. если я эхо вне функции, я получаю только оригинальное объявление.

действительно странно, и я боролся с этим весь день.

 return $thisXml; } echo $thisXML; 

$ ThisXML; существует только в рамках функции. Либо сделайте $ thisXML; глобальная (плохая идея) или echo getThisXML() где getThisXML – это функция, которая возвращает $thisXML ;

Вы на самом деле называете функцию в смысле:

$ thisXml = getThisXML ($ someinput);

Может быть, глупый вопрос, но я не вижу его в вашем описании.

Вы должны вызвать функцию и применить echo к возвращаемому значению:

  $thisXml = '…'; echo getThisXML($thisXml); 

Или вы переходите по ссылке .

Вам нужно вызвать функцию!

 $thisXml = 'xml declaration stuff'; echo getThisXML($thisXML); 

Или передайте переменную по ссылке:

 $thisXml = 'xml declaration stuff'; function getThisXML(&$thisXML){ ... return $thisXml; } getThisXML($thisXML); echo $thisXml; 

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

Использование:

 $thisXML; function do(){ global $thisXML; $thisXML = "foobar"; } print $thisXML; 

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

 $my_var = 5; function my_func() { $my_var = 10; return $my_var; } print my_func(); print "\n"; print $my_var; 

Это напечатает

 10 5