0

我正在尝试将数据从数据库打印到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>
  1. 为什么我的第二个“print_row”函数调用不在我的第一个“print_row”函数调用中?
  2. 这甚至不可能吗?(PHP - 我可以将函数名作为函数参数传递吗?
4

2 回答 2

4

几乎总是在函数调用中使用return而不是。echo

为什么?因为return返回数据并让您存储和回显它。echo只是将它呈现给浏览器。

return基本和echo功能的一个例子是print_r(). 如果第二个参数为 TRUE ,它要么执行 a echo,要么执行 a。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 ')'
于 2012-05-15T13:37:41.210 回答
2

您必须从函数返回值,而不是echo它。

于 2012-05-15T13:37:10.013 回答