2012-05-09 9 views
15

si prega di controllare il seguente codice.PHP: utilizzando una variabile all'interno di virgolette doppie

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

Il $imagebaseurl è una variabile che è contenente un link al mio cartella di immagini (upload) e all'interno della cartella ho alcune altre cartelle che prendono il nome mio nome utenti. per esempio: ho un utente il cui nome è john, quindi il link dovrebbe apparire come questo->support/content_editor/uploads/john.

L'idea principale è quando un utente ha effettuato l'accesso e sfoglia la sua galleria di immagini. Voglio portarlo nella sua galleria che in pratica prende il nome dal suo nome.

Quando visiterà la galleria il valore di $name nel collegamento verrà dal nome di accesso dell'utente (dalla sessione). Ora il problema è che probabilmente hai già capito che il posizionamento di $name nel link qui sopra è sbagliato ed è per questo che non funziona. Sto ottenendo tutto questo URL> (supporto/content_editor/uploads/$ nome) invece di (supporto/content_editor/uploads/John)

Ora potrebbe dirmi come utilizzare il $name in questo $imagebaseurl = 'support/content_editor/uploads/$name';

+2

utilizzare le virgolette doppie invece di quelli singoli o di utilizzare la soluzione di Radu. –

+2

(''' è una citazione singola, non una citazione doppia ...) –

+1

http://php.net/string – hakre

risposta

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

o

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

Nota che se si utilizza le doppie virgolette, è possibile anche scrivere quanto sopra come:

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

È opportuno prendere l'abitudine di usare {$...} tra virgolette anziché solo $..., per le volte in cui è necessario inserire la variabile in una stringa in cui non è ovvio a PHP quale parte è la variabile e quale parte è la stringa .

Se si desidera la prestazione migliore, utilizzare la concatenazione di stringhe con virgolette singole.

+2

Solo un sidenote: si consiglia di non utilizzare virgolette doppie con variabili al loro interno.È orribile per la leggibilità del codice e il debugging e PHP è anche leggermente più veloce se vengono usate virgolette singole (come il primo esempio della risposta di Radu). – kingmaple

+1

http://php.net/sprintf – hakre

+0

+1. Nota a margine: preferibile andare per la soluzione migliore. – RSM

0

Non potrei non essere più d'accordo con il post precedente.

sarei quasi spingerei a chiamo cattiva pratica di utilizzare

$varname = 'EXAMPLE'; 

$fulltext = "This is an $varname"; 

La sua più gestibile, dalla mia esperienza, di utilizzare un buon amico conosciuto come sprintf();

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

echo EXAMPLE; 

Perché? Il primo può sembrare più chiaro, ma il secondo è molto più riutilizzabile. Raccomando di utilizzare sprintf sulla doppia citazione di php magic double che esiste, letteralmente, in nessun'altra lingua.

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

questa è anche la pratica utilizzata molto simile a C#, e molte altre lingue.

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

Problemi correlati