0

print_r配列とオブジェクトを出力echoし、残りを行うことを知っています。

私の質問は、私が何かをコーディングした結果であり、どういうわけか a の返された変数は でfunction印刷されませんechoが、print_rorで印刷されvar_dumpます。返されechoprint_r変数stringarray

したがって、私の質問は次のとおりです。テンプレートfunction showPreviousDisciplineに配置した場合に返される HTML コードのみが表示されるのはなぜですか? print_rorを必要とせずに関数を呼び出すだけで表示されるべきではありませんechoprint_r? 一日の終わりには、出力されているのは単なるテキストです

HTML

<div class="ldcMainWrap">
<table>
    <tr>
        <td>
            <select multiple="multiple" size="5"> 
            <?php 
// Displays something in the page if is print_r but not if i echo it... or even if i dont put anything...
print_r ($this->showPreviousDiscipline(1)); 
?>
            </select>
        </td>
        <td>
            <select multiple="multiple" size="5"> 
            </select>
        </td>
    <tr>
</table>
<div>

PHP

public function drawWebsite () {
    $tpl = include "step.one.view.php";
    return $tpl;
}

public function showPreviousDiscipline ( $uID ) {   
    $AllUserDetails = parent::$this->pullUserDetails ( $uID );
    $allDataRaw     = parent::$this->pullDeparmentTableData ();
    $html       = '';

    // Loops through the array $allDataRaw
    foreach ($allDataRaw as $key => $val) { 

        foreach ($val  as $key2 => $val2) {

            //CHECKs if he user has already selected one and if it does it applies a CSS class
            if($key2) {
                if($val2 === $AllUserDetails['rID']) {
                    $html .= '<option value ="'.$val2.'" class="selected">'.$key2.'</option>';
                }else {
                    $html .= '<option value ="'.$val2.'" class="unselected">'.$key2.'</option>';}
            }
        }   
    }   
    $html           .= ''; 
    return $html;
}

テスト出力

        <select multiple="multiple" size="5"> 
  <option value="11" class="unselected">dID</option>
    <option value="test1" class="unselected">dName</option>
    <option value="" class="unselected">dDescription</option>
<option value="22" class="selected">dID</option>
    <option value="test2" class="unselected">dName</option>
    <option value="" class="unselected">dDescription</option> 
               </select>
4

1 に答える 1

0

マニュアルより (http://php.net/manual/ja/function.echo.php)

echo (unlike some other language constructs) does not behave like a function,    
so it cannot always be used in the context of a function.    

したがって、echo( fn()) は NULL を返します。関数の値を「エコー」したい場合は、値をローカル変数に戻し、その値をエコーする必要があります。それか、(あなたが見つけたように)「print_r」を介して呼び出します。

あなたの質問ごとに:

 Shouldn't it display only by me calling the function without the need of echo or print_r?

関数で (戻り値を割り当てる代わりに) echo、print、または print_r を呼び出すと、機能します。現状では、関数は値を返しますが、何も出力しません。

于 2012-11-15T11:00:19.510 に答える