black_belt
black_belt

Reputation: 6799

PHP: Using a variable inside a double quotes

please check the following code.

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

The $imagebaseurl is a variable that is containing a link to my image folder (uploads) and inside the folder I have some other folders which are named after my users name. for example: I have a user who's name is john, so the the link should look like this-> support/content_editor/uploads/john.

The main idea is when any user is logged in and browses his image gallery I want to take him to his own gallery which basically is named after his name.

When he will visit the gallery the value of $name in the link will come from the user's login name (from session). Now the problem is as you probably have already understood that the placement of $name in the above link is wrong and that is why it is not working. I am getting this whole URL> (support/content_editor/uploads/$name) instead of (support/content_editor/uploads/john)

Now could you please tell me how to use the $name in this $imagebaseurl = 'support/content_editor/uploads/$name';

Upvotes: 29

Views: 68566

Answers (2)

HumbleWebDev
HumbleWebDev

Reputation: 565

I couldn't disagree more with the previous post.

I'd almost go as far to call it bad practice to use

$varname = 'EXAMPLE';

$fulltext = "This is an $varname";

Its more maintainable, from my experience, to utilize a good friend of mine known as sprintf();

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

echo EXAMPLE;

Why? The first one may seem more clear, but the second one is much more re-usable. I recommend utilizing sprintf over the php magic double quote nonesense which exists, literally, in NO other language.

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

This is also the practice used very similar to C#, and many other languages.

See also: https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

Upvotes: -7

rid
rid

Reputation: 63442

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

or

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

Note that if you use double quotes, you can also write the above as:

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

It's good though to get in the habit of using {$...} in double quotes instead of only $..., for times where you need to insert the variable in a string where it's not obvious to PHP which part is the variable and which part is the string.

If you want the best performance, use string concatenation with single quotes.

Upvotes: 70

Related Questions