如何将XML作为简单字符串回显?

时间:2013-03-17 19:49:31

标签: php echo

我无法理解代码的行为:

输入:

<?php
    function polldaddy_choices($choices) {
      foreach ($choices as $choice) {
        $answer = "<pd:answer>
                   <pd:text>" . $choice . "</pd:text>
                   </pd:answer>";
        echo $answer; 
     }
  }
  $total_choices = array('yes' , 'no' , 'do not know');
  $ans = polldaddy_choices($total_choices); 
  $xml = "world" . $ans . "hello" ;
  echo $xml;
?>

输出:

  <pd:answer>
      <pd:text></pd:text>
      </pd:answer><pd:answer>
      <pd:text></pd:text>
      </pd:answer><pd:answer>
      <pd:text></pd:text>
      </pd:answer>worldhello

为什么字符串出现在输出的末尾?

以下是键盘上的链接:http://codepad.org/2dbiCelb

3 个答案:

答案 0 :(得分:1)

你的功能没有返回任何东西。你在这个函数中直接回应。

首先你打电话给polldaddy_choices,它回应了html。然后,你回应:

$xml = "world" . "" . "hello" ;

答案 1 :(得分:1)

因为您在echo函数中polldaddy_choices输出了。以下是:

$ans = polldaddy_choices($total_choices);实际上是在打印XML,并且:

$xml = "world" . $ans . "hello";只会打印 worldhello ,为$ans === null

我想你可能想做更多的事情:

function polldaddy_choices($choices) {
    $answers = array();
    foreach ($choices as $choice) {
        $answer = "<pd:answer>
                   <pd:text>" . $choice . "</pd:text>
                   </pd:answer>";
        $answers[] = $answer;
    }

 return implode("\n", $answers);
}

答案 2 :(得分:1)

您的功能正在直接回显xml代码。在下面的代码中,您将看到我创建一个变量($ answer =“”;),然后使用“。=”将xml附加到变量的末尾。在函数结束时,我返回$ answer的值。

当你调用函数时($ ans = polldaddy_choices($ total_choices);),它会将函数的返回值放入$ ans变量。

<?php
function polldaddy_choices($choices) {
  $answer = "";
  foreach ($choices as $choice) {
    $answer.= "<pd:answer>
               <pd:text>" . $choice . "</pd:text>
               </pd:answer>";
 }
 return $answer;
}
$total_choices = array('yes' , 'no' , 'do not know');
$ans = polldaddy_choices($total_choices); 
$xml = "world" . $ans . "hello" ;
echo $xml;
?>