簡體   English   中英

在函數調用中將php函數作為參數調用

[英]Calling a php function as a parameter inside a function call

我正在嘗試將數據庫中的數據打印為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-我可以將函數名稱作為函數參數傳遞嗎?

在函數調用中,幾乎總是使用return而不是echo

為什么? 因為return返回數據並讓您存儲和回顯數據。 echo只是將其呈現給瀏覽器。

基本的returnecho函數的示例是print_r() 它要么執行echo ,要么在第二個參數為TRUE時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 ')'

您必須從函數返回值,而不是echo它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM