Возврат переменной из функции в php (возврат не работает) - PullRequest
7 голосов
/ 05 февраля 2009

Я создаю страницу 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. если я эхо за пределами функции, я получу только оригинальное объявление.

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

Ответы [ 7 ]

10 голосов
/ 05 февраля 2009
return $thisXml;
}
echo $thisXML;

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

7 голосов
/ 05 февраля 2009

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

$thisXml = getThisXML($someinput);

Возможно глупый вопрос, но я не вижу его в вашем описании.

2 голосов
/ 05 февраля 2009

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

$thisXml = 'xml declaration stuff';

echo getThisXML($thisXML);

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

$thisXml = 'xml declaration stuff';

function getThisXML(&$thisXML){
  ...
  return $thisXml;
}

getThisXML($thisXML);
echo $thisXml;
2 голосов
/ 05 февраля 2009

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

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

Или вы можете передать переменно ссылка .

1 голос
/ 05 февраля 2009

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

$my_var = 5;

function my_func() {
  $my_var = 10;
  return $my_var;
}

print my_func();
print "\n";
print $my_var;

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

10
5
1 голос
/ 05 февраля 2009

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

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

$thisXML;

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

print $thisXML;
0 голосов
/ 07 апреля 2019
You can create function in php this way:

<?php

$name = array("ghp", "hamid", "amin", "Linux");
function find()
{
    $find = 0;
    if(in_array('hamid', $name))
    {
      $find = 1;
      return $find;
    }
    else 
    {
      return $find;
    }
}


//###################
$answare = find();
echo $answare;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...