-1

重複の可能性:
PHPの文字列の中括弧

私はいくつかの「奇妙な」PHPコードに遭遇したので、これの代わりに:

<?php echo $variable; ?>

私はこれを持っています:

${variable}

変数にこれを作成する方法を取得できません:

<?php echo number_format($variable, 2, ',', '.') ?>

何か案は?

ありがとう。

編集:これは実際のコードです:

<script id="productTemplate" type="text/x-jquery-tmpl">
                <?php echo "Save:"; ?> ${savings} <?php echo "or"; ?> ${savings_percentage} <?php echo "%"; ?>
</script>

これは出力します:

Save 15 or 3.2302678810608 %

$ {savings_percentage}にnumber_formatを追加して、次のように出力できるようにする必要があります。

Save 15 or 3.23 %

しかし、方法がわかりません...

4

3 に答える 3

2

TMPLと呼ばれるjqueryプラグイン(現在はサポートされていません)を使用しています。

javascriptを介してデータを変換する必要があります。

${savings_percentage.toFixed(2)} 

ネイティブ.toFixedメソッドを使用することも、ヘルパーを使用することもできます(たとえば、この質問を参照してください) 。

于 2012-10-27T18:34:08.050 に答える
1

これはPHP変数ではありません。これは、テンプレートエンジン変数、またはJavaScriptで記述されたスクリプトの一部のようなものです。

その外部PHPスクリプト(によって定義され<?php ?>ます)。

詳細については、テンプレートエンジンまたはそのスクリプトマニュアルをお読みください。

サーバーがブラウザにhtmlページを送信した後、これはクライアントマシン上のJavaScriptによって処理されるため、PHPからアクセスする方法はありません。PHPはサーバー上で処理されるため、ブラウザーとPHPコードの間で変数を直接渡すことはできません。

于 2012-10-27T18:12:58.227 に答える
0

${変数}構文

これが二重引用符の文字列内にない限り、これは次のようになります。$variable

二重引用符で囲まれた文字列

二重引用符で囲まれた文字列では、この構文を使用します。たとえば、変数名が誤って解釈される場合などです。

つまり、次の名前の変数をエコーするコードがあります$variable

$variable = "something";
echo "This is a string with a $variable";
// outputs "This is a string with a something"

これは同じコードですが、この場合、変数の直後に文字列「name」が続きます。

echo "This is a string with a $variablename";
// outputs "This is a string with a "

'wrong'出力に加えて、$variablenameが定義されていないため、未定義の変数エラーがスローされます。

これは同じ例で、中括弧を使用して変数が何であるかを明示します。

$variable_name = "something";
echo "This is a string with a ${variable}name";
// outputs "This is a string with somethingname"

テンプレートエンジン

あなたの編集から:

<script id="productTemplate" type="text/x-jquery-tmpl">
    <?php echo "Save:"; ?> ${savings} <?php echo "or"; ?> ${savings_percentage} <?php echo "%"; ?>
</script>

ここでの変数はphpタグに含まれていないため、php-contextでそれらが何を意味するかを探すのは論理的ではありません。これらは単なるプレーンテキストであり、scriptタグから示されているように、(廃止されたjquerytmpl関数で使用することを目的としています。

$ {savings_percentage}にnumber_formatを追加して、次のように出力できるようにする必要があります。

さて、あなたが質問に入れていないjsを修正して、それができるようにします:)

于 2012-10-27T18:26:17.507 に答える