0

持っているオリジナルコードを変更したいのですが、

echo "<p><strong>" . __('Area:', 'honegumi') . "</strong> " . number_format($productarea) . " m² (";
echo metersToFeetInches($productarea) . " ft²)" . "</p>";

ここに示すように、1echo行に変換します。

echo "<p><strong>" . __('Area:', 'honegumi') . "</strong> " . number_format($productarea) . " m² (" . metersToFeetInches($productarea) . " ft²)" . "</p>";

しかし、 metersToFeetInches($productarea)のこの 2 番目のケースでは、奇妙な改行が発生しています。

生成された HTML:

    24,757
<p>
<strong>Area:</strong>
2,300 m² ( ft²)
</p>

出力:

    24,757
    

領域: 2,300 m² (フィート²)

どうすれば解決できますか?将来自分でそれを行う方法を学ぶために読むことができるドキュメントはありますか?

4

1 に答える 1

2

私はここで何が起こっているのかを知っていると確信しています。あなたの関数metersToFeetInchesecho値ではなく値をreturn使用しています。

function metersToFeetInches() {
   echo 'OUTPUT';
}

echo 'FIRST '.metersToFeetInches().' LAST';
// Outputs: OUTPUTFIRST  LAST

echo metersToFeetInches()実際には冗長です。

これは、作成した文字列が実際に出力される前に関数が実行されるためです。投稿した両方の例でこの問題が発生することに注意してください。return代わりに、関数を値に変更してください。その後、あなたがそれを使用した場所は次のようになります:

echo 'Something';
metersToFeetInches();
echo 'Something Else';

echo:を使用する必要があります

echo 'Something';
echo metersToFeetInches();
echo 'Something Else';

関数はほとんど常にreturn値である必要があります。学んだ教訓、おそらく?


本当にバインド状態にあり、関数を変更できない場合は、出力バッファリングに頼る必要があります。

ob_start();
metersToFeetInches($productarea);
$metersToFeetInches = ob_get_clean();

echo "<p><strong>" . __('Area:', 'honegumi') . "</strong> " . number_format($productarea) . " m² (" . $metersToFeetInches . " ft²)" . "</p>";

...これはやらなければならないのはかなりばかげています。

于 2012-12-13T05:29:32.917 に答える