2012-05-09 7 views
15

次のコードを確認してください。PHP:変数を二重引用符で囲む

$imagebaseurl = 'support/content_editor/uploads/$name'; 

$imagebaseurlは私の画像フォルダ(アップロード)へのリンクを含むフォルダ内の私は自分のユーザー名にちなんで命名されているいくつかの他のフォルダを持っている変数です。たとえば、私は名前がjohnのユーザーを持っているので、リンクはthis->support/content_editor/uploads/johnのようになります。

主なアイデアは、ユーザーがログインして画像ギャラリーを閲覧したときに、私は彼を自分のギャラリーに連れて行き、基本的に彼の名前にちなんで名づけられます。

彼がギャラリーにアクセスするとき、リンクの$nameの値はユーザーのログイン名(セッションから)から来ます。今問題はおそらく既に上記のリンクの$nameの配置が間違っていることを既に理解しているので、それが動作していない理由です。私が代わりに>(サポート/ content_editor /アップロード/ $名)この全体のURLを取得しています(サポート/ content_editor /アップロード/ジョン)

は今、あなたはどのようにこの$imagebaseurl = 'support/content_editor/uploads/$name';

+2

利用、二重引用符の代わりに単一のものをかラドゥのソリューションを使用します。

も参照してください。 –

+2

( '' 'は一重引用符で、二重引用符ではありません...) –

+1

http://php.net/string – hakre

答えて

33
$imagebaseurl = 'support/content_editor/uploads/' . $name; 
$nameを使用する方法を教えてください可能性

または

$imagebaseurl = "support/content_editor/uploads/{$name}"; 

あなたは二重引用符を使用する場合、あなたはまた、上記のように書くことができることに注意してください。

$imagebaseurl = "support/content_editor/uploads/$name"; 

$...の代わりに{$...}を二重引用符で囲むことを習慣に入れるのは良いことです。これは、変数がどの部分が文字列であり、どの部分が文字列であるかPHPには分かりません。

最高のパフォーマンスが必要な場合は、一重引用符で文字列連結を使用します。

+2

ちょっとした傍点:二重引用符を使用しないでください。コードの可読性とデバッグには恐ろしいものです。また、単一引用符を使用すると(たとえRaduの答えの最初の例のように)PHPが少し速くなります。 – kingmaple

+1

http://php.net/sprintf – hakre

+0

+1。サイドノート:トップソリューションに行くことをお勧めします。 – RSM

0

私は以前の投稿でそれ以上の意見はありませんでした。

私は(ほとんど限りいいと思う

$varname = 'EXAMPLE'; 

$fulltext = "This is an $varname"; 

は、そのより保守、私の経験から、sprintfのとして知られている私の良き友人を利用するために使用する悪い習慣、それを呼び出すために)。

define('CONST_NAME', 'This is an example of a better %s'); 
define('EXAMPLE', sprintf(CONST_NAME, 'practice')); 

echo EXAMPLE; 

なぜですか?最初のものははっきりと見えるかもしれませんが、2番目のものははるかに再利用可能です。文字通り、他の言語では存在しない、PHPマジックの二重引用符ではなく、sprintfを利用することをお勧めします。

http://php.net/manual/en/function.sprintf.php

また、これはC#に非常に似て使用練習、および他の多くの言語です。 https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

関連する問題