0

私は動作するこのコードを使用しています:

$this->path_medium = $this->PICTURES . "$this->file_hash-2.jpg";

ただし、あまり読みにくいため、更新する必要があります。

$this->file_hash

は変数です。

-2.jpg

変数に追加する文字列です。

インタプリタは、変数がどこで終わり、文字列がどこで始まるかをどのように知るのでしょうか。

4

5 に答える 5

2

コードがそのまま機能する理由-は、変数名内の有効な文字ではないためです。PHP は、無効な変数名文字に遭遇したこの境界で変数名の解析を停止します。これを行おうとした場合:

$this->path_medium = $this->PICTURES . "$this->file_hash2.jpg";

$this->file_hash2PHPは、変数が参照されていると考えていたでしょう。

これにアプローチするには、いくつかの方法があります。私の個人的な好みは、次のように変数を引用符で囲まないことです。

$this->path_medium = $this->PICTURES . $this->file_hash . '-2.jpg';

{}読みやすくするために、変数の周りに使用することもできます。

$this->path_medium = $this->PICTURES . "{$this->file_hash}-2.jpg";
于 2013-02-18T18:14:33.640 に答える
2

インタープリターは、変数がどこで終わり、文字列が始まるかをどのように認識しますか。

変数に (-) 文字が含まれていません。( echo "$var-$var";) のように、この場合、PHP は file_hash を変数と見なします。

http://www.php.net/manual/en/language.variables.basics.phpから

変数名は、PHP の他のラベルと同じ規則に従います。有効な変数名は、文字またはアンダースコアで始まり、任意の数の文字、数字、またはアンダースコアが続きます。正規表現としては、次のように表現されます: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

于 2013-02-18T18:16:05.827 に答える
1

試す:

$this->path_medium = $this->PICTURES . $this->file_hash . "-2.jpg";
于 2013-02-18T18:12:43.993 に答える
1

さらに、これを更新するにはどうすればよいですか?

変数をカーリーで囲みます。

$this->path_medium = "{$this->PICTURES}{$this->file_hash}-2.jpg";

(または、最初の変数で行ったように、連結を使用します)

通訳者はどのように知っていますか

変数の最初の無効な文字で停止すると思います(-それらの1つです)

于 2013-02-18T18:14:02.660 に答える
0

構文的に正しくない変数を文字列に挿入するため、@Sean コードを使用する必要があります。そうしないと、コンパイラは変数テキストを「分割」できません。

于 2013-02-18T18:16:15.480 に答える