我正在尝试将数据从数据库打印为hcard格式:
...
<span class='n'>
<span class="given-name">John</span>
...
</span>
然后我创建了这个php函数:
function print_row ($html_tag, $type, $value) {
echo '<'.$html_tag.' class="'.$type.'">'.$value.'</'.$html_tag.'>';
}
// Calling function
print_row('span', 'given_name', 'John');
// Output
<span class="given_name">Nathan</span>
这是我所期望的,直到我尝试将print_row
函数作为print_row
函数的参数调用。
print_row('span', 'n', print_row('span', 'given_name', 'Nathan'));
// Output
<span class="given_name">Nathan</span>
<span class="n"></span>
// Wanted Output
<span class="n"><span class="given_name">Nathan</span></span>
答案 0 :(得分:4)
在函数调用中, 总是使用return
而不是echo
。
为什么呢?因为return
返回数据并允许您存储和回显它。 echo
只是将其呈现给浏览器。
基本return
和echo
功能的示例是print_r()
。如果第二个参数为TRUE,它可以执行echo
或return
。
你应该改变
function print_row ($html_tag, $type, $value) {
echo '<'.$html_tag.' class="'.$type.'">'.$value.'</'.$html_tag.'>';
}
到
function print_row ($html_tag, $type, $value) {
return '<'.$html_tag.' class="'.$type.'">'.$value.'</'.$html_tag.'>';
}
并在现有场所相应地回应功能
那或添加return
代替echo
的第四个参数:
function print_row ($html_tag, $type, $value, $bool = FALSE) {
$str = '<'.$html_tag.' class="'.$type.'">'.$value.'</'.$html_tag.'>';
if ($bool)
return $str;
else echo $str;
}
print_row('span', 'n', print_row('span', 'given_name', 'Nathan', TRUE));
// Added a ', TRUE' at the second last ')'
答案 1 :(得分:2)
您必须从函数返回值,而不是echo
它。