Я создаю 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