0

我想更改我拥有的原始代码,

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

echo一行,如下所示:

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

但是在第二个案例中,对于metsToFeetInches($productarea),我遇到了一些奇怪的换行符。

生成的 HTML:

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

输出:

    24,757
    

区域: 2,300 平方米(平方英尺)

我该如何解决?有没有我可以阅读的文档来学习将来如何自己做?

4

1 回答 1

2

我很确定我知道这里发生了什么,你的函数metersToFeetInchesechoing 一个值而不是returning 它。

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 回答