0

次のような文字列があります。

$s1 = "Apples";
$s2 = "$s1 are great";
echo $s2;

PHP についての私の理解では、2 行目の二重引用符により $s1 が文字列内で評価され、出力は次のようになります。

Apples are great

しかし、$s1 の値を変更し、それを再評価して新しい文字列を取得する「テンプレート」として $s2 を保持したい場合はどうすればよいでしょうか? このようなことは可能ですか?例えば:

$s1 = "Apples";
$s2 = "$s1 are great";
echo $s2 . "\n";

$s1 = "Bananas";
$s3 = "$s2";
echo $s3 . "\n";

次の出力が得られることがわかりました。

Apples are great 
Apples are great

私が得たいと思っているのは、次のようなものです:

Apples are great 
Bananas are great

「テンプレート」文字列を同じに保ち、入力変数を変更してから、新しい文字列に再評価できるようなことは PHP で可能ですか? または、これはPHPでは不可能ですか?

4

3 に答える 3

2

さて、次のようなことができます: (簡単なマッシュアップ)。

$template = "{key} are great";
$s1 = "Apples";
$s2 = "Bananas";

echo str_replace('{key}',$s1,$template) . "\n";
echo str_replace('{key}',$s2,$template) . "\n";
于 2012-06-27T07:35:49.630 に答える
1

同様の結果を得るには、無名関数 (クロージャー)を使用してみてください: (PHP 5.3 以上のみ!)

$s1 = function($a) { 
    return $a . ' are great';
};

echo $s1('Apples');
echo $s1('Bananas');
于 2012-06-27T07:47:35.927 に答える
0

参照渡しを使用することもできます (ただし、オリジナルを変更する必要がある場合は、関数でより一般的に使用されます)。

<?php

$s4 = " are great";
$s1 = "Apples";
$s2 = &$s1;

echo $s2.$s4;

$s1 = "Bananas";
$s3 = $s2;
echo $s3.$s4;

?>

出力:

Apples are great
Bananas are great 
于 2012-06-27T07:59:34.777 に答える