我无法理解代码的行为:
输入:
<?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
答案 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;
?>