0
function getHeader($id){

    // VARS
    $print="";

    // SQL TO GET THE ORDER
    $mySQL=mysql_query("
    SELECT * FROM `table`
    ");

    // LOOP THE IDS 
    while($r=mysql_fetch_array($mySQL)){

    $print .=  '<p>'.$r["id"].'</p>';

    }
    return $print;
}

// MAIL FUNCTION
function mailToSend($Id){

        $getHeader = getHeader($Id);

$html = <<<EOM
        <!DOCTYPE html>
        <html lang="en">
        <head>
        </head>
        <body>
        $getHeader;
        </body>
        </html>
EOM;

}

mailToSend(46088);


?>

私の質問は私の前の質問に関連しています(http://stackoverflow.com/questions/13917256/php-why-cant-eom-contain-php-functions)

$printそれがループされ、多くの行が含まれていると仮定します。returnステートメントがデータをループするようにするにはどうすればよいですか。私は使用する必要がありますreturn

4

4 に答える 4

4

関数「foo」の結果を誤って使用しました。あなたはこのようにそれをするべきです。

function show(){
    $foo =  foo();
    echo $foo;
}

編集:foo()関数を使用して変数を渡さなかったため、宣言でパラメーター$barが必要です

于 2012-12-19T12:31:59.463 に答える
2

関数の概念と実行範囲を理解しています?を返した後$print、変数の値はに割り当てられます$foo。$printは外部スコープに存在しなくなります。あなたはしなければなりませんecho $foo

于 2012-12-19T12:33:25.387 に答える
0

私はあなたを正しく理解しているかどうかはわかりませんが、あなたは望んでいません:

<?php

function show(){
    echo foo();
}

?>
于 2012-12-19T12:32:25.590 に答える
0

returnをechoに置き換えると、コンテンツを追加したので、そのために配列を使用する必要はありません。

関数自体のコンテンツをエコーする場合、別の変数で戻り値を取得する必要はありません。

function foo($bar){

    // VARS
    $foo="Chocolate";
    $print="";

    // SQL TO GET THE ORDER
    $mySQL=mysql_query("
    SELECT * FROM `table`
    ");

    // LOOP THE IDS 
    while($r=mysql_fetch_array($mySQL)){

        $print .=  '<p>'.$r["id"].'</p>';

    }
    echo $print;
}


// call the function
// you dont need to have function show
foo();
于 2012-12-19T12:34:39.053 に答える