I'm building an XML page inside of a function, and for some strange reason I don't get the whole thing spit out of the function. I've tried
return $thisXml;
}
echo $thisXML;
and I only get the xml declaration which is in the variable before the function. If i put an echo in the function, i get everything back as I should.
my page essentially looks like this
$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;
as i said, if I replace the 'return' with 'echo', I get all the nice xml. if I echo outside the function, I only get the original declaration.
really strange, and i've been struggling with this one all day.
You are trying to use a variable defined inside the function scope.
Use:
$thisXML; only exists in the scope of the function. Either make $thisXML; global (bad idea) or
echo getThisXML()
where getThisXML is the function that returns$thisXML
;You have to call the function and apply
echo
on the returned value:Or you pass the variably by reference.
Returning a variable doesn't mean that it affects that variable globally, it means the function call evaluates to that value where it's used.
This will print
You need to invoke the function!
Or pass the variable by reference: