私は動作するこのコードを使用しています:
$this->path_medium = $this->PICTURES . "$this->file_hash-2.jpg";
ただし、あまり読みにくいため、更新する必要があります。
$this->file_hash
は変数です。
-2.jpg
変数に追加する文字列です。
インタプリタは、変数がどこで終わり、文字列がどこで始まるかをどのように知るのでしょうか。
私は動作するこのコードを使用しています:
$this->path_medium = $this->PICTURES . "$this->file_hash-2.jpg";
ただし、あまり読みにくいため、更新する必要があります。
$this->file_hash
は変数です。
-2.jpg
変数に追加する文字列です。
インタプリタは、変数がどこで終わり、文字列がどこで始まるかをどのように知るのでしょうか。
コードがそのまま機能する理由-
は、変数名内の有効な文字ではないためです。PHP は、無効な変数名文字に遭遇したこの境界で変数名の解析を停止します。これを行おうとした場合:
$this->path_medium = $this->PICTURES . "$this->file_hash2.jpg";
$this->file_hash2
PHPは、変数が参照されていると考えていたでしょう。
これにアプローチするには、いくつかの方法があります。私の個人的な好みは、次のように変数を引用符で囲まないことです。
$this->path_medium = $this->PICTURES . $this->file_hash . '-2.jpg';
{}
読みやすくするために、変数の周りに使用することもできます。
$this->path_medium = $this->PICTURES . "{$this->file_hash}-2.jpg";
インタープリターは、変数がどこで終わり、文字列が始まるかをどのように認識しますか。
変数に (-) 文字が含まれていません。( 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]*'
試す:
$this->path_medium = $this->PICTURES . $this->file_hash . "-2.jpg";
さらに、これを更新するにはどうすればよいですか?
変数をカーリーで囲みます。
$this->path_medium = "{$this->PICTURES}{$this->file_hash}-2.jpg";
(または、最初の変数で行ったように、連結を使用します)
通訳者はどのように知っていますか
変数の最初の無効な文字で停止すると思います(-
それらの1つです)
構文的に正しくない変数を文字列に挿入するため、@Sean コードを使用する必要があります。そうしないと、コンパイラは変数テキストを「分割」できません。