2011-08-18 13 views
68

Basta chiedersi se c'è qualcosa di simile. = Per l'aggiunta di testo all'inizio di una stringa, ad es .:Qualsiasi equivalente a. = Per aggiungere all'inizio di stringa in PHP?

$foo =. 'bar'; 

che non funziona.

Edit: ad esempio era in origine $foo =. $bar; che può essere raggiunto con $bar .= $foo;

+4

'$ bar. = $ Pippo'? –

+0

Garantisco James 'anche se avrebbe dovuto scrivere una risposta per questo ... – Christian

+4

Questo accoda '$ pippo' a' $ bar', invece di anteporre '$ bar' a' $ pippo'. Il risultato è simile, ma penso che voglia mutare '$ pippo'. –

risposta

98

Nope. Ma si può fare

$foo = "bar" . $foo 
+3

'.', non' + '... –

+7

Urgh hai ragione. Ultimamente ho fatto troppo JavaScript. –

+1

sì, ma quando appare: '$ foo ['bar'] ['bork'] [$ bork] = 'bar'. $ Foo ['bar'] ['bork'] [$ bork];' tu inizia a chiedersi perché non c'è solo una scorciatoia come. = – yuttadhammo

-2
$foo = "Some Foo Text"; 
$bar = "Some Bar Text"; 

    echo $foo.$bar // Some Foo TextSome Bar Text 
    echo $bar.$foo // Some Bar TextSome Foo Text 

$foobar = $foo.$bar 
$boofar = $bar.$foo 
3

Si può sempre fare la propria funzione per questo:

function prepend($string, $chunk) { 
    if(!empty($chunk) && isset($chunk)) { 
     return $string.$chunk; 
    } 
    else { 
     return $string; 
    } 
} 

$string sarebbe il pezzo che si desidera anteporre e $chunk sarebbe il testo che si desidera qualcosa si è preposto a questo.

Si potrebbe dire che i controlli sono facoltativi, ma avendo questo lì non è necessario preoccuparsi di passare un valore nullo per sbaglio.

+0

Ben fatto, ma in realtà non semplifica le cose :) – yuttadhammo

+1

Grazie, hai ragione però. Non è così facile o veloce come qualcosa di integrato. Sentiti libero di copiare e incollare se questo aiuta a rendere più facile: D – Aaron

+4

Se qualcosa è '! Vuoto' è sempre anche' isset', non è necessario per questo doppio controllo. Inoltre, poiché '$ chunk' è un parametro obbligatorio della funzione, * deve * essere passato alla funzione o PHP si lamenterà. Questo significa che questo controllo può essere abbreviato in "if ($ chunk)" (per vedere se è * falsy * a.k.a. "empty"). Ma, se '$ chunk' non contiene nulla, non accadrà nulla. Quindi questo intero corpo di funzioni può essere abbreviato in 'return $ string. $ Chunk'. Il che significa che questa intera funzione non è necessaria. – deceze

2

So che questo è stato chiesto/risposto qualche tempo fa, ma fornendo questa risposta in quanto è funzionalmente equivalente nonostante non sia un operatore di assegnazione e nessuno ha commentato il suo utilizzo per la concatenazione generale delle stringhe.

È possibile esaminare l'uso della famiglia di funzioni sprintf (documentation) per la concatenazione di stringhe. Offre molta più sanificazione e usabilità rispetto alla semplice combinazione di due stringhe con operatori di assegnazione.

$foo = 'foo'; 

$append = sprintf('%1$s%2$s', $foo, 'bar'); 
var_dump($append); 
/* string(6) "foobar" */ 

$prepend = sprintf('%1$s%2$s', 'bar', $foo); 
var_dump($prepend); 
/* string(6) "barfoo" */ 

$prependInvert = sprintf('%2$s%1$s', $foo, 'bar'); 
var_dump($prependInvert); 
/* string(6) "barfoo" */ 

$wrap = sprintf('%2$s%1$s%2$s', $foo, 'bar'); 
var_dump($wrap); 
/* string(6) "barfoobar" */ 

Normalmente uso vsprintf, poiché lavorare con le matrici è più facile da gestire posizioni di valore di singoli argomenti.

$vprepend = vsprintf('%2$s%1$s', array('foo', 'bar')); 
var_dump($vprepend); 
/* string(6) "barfoo" */ 

anche con una serie di valori, si può semplicemente implode l'insieme risultante di valori per semplice concatenazione di stringhe.

var_dump(implode('', array('bar', 'foo'))); 
/* string(6) "barfoo" */ 
1

È possibile avvolgere la funzione built-in substr_replace, dove gli argomenti $ inizio e $ lunghezza può essere impostato a 0, che antepone la sostituzione $ a $ stringa e restituisce il risultato, in questo modo:

function prepend(& $string, $prefix) { 
    $string = substr_replace($string, $prefix, 0, 0); 
} 

Un esempio d'uso della funzione di supporto sarebbe:

$email_message = "Jonathan"; 
$appropriate_greeting = "Dear "; 
prepend($email_message, $appropriate_greeting); 
echo $email_message; 

Se siete in programmazione procedurale, che è.

+0

Non vedo l'interesse di usare substr_replace; facendo un semplice '$ stringa = $ prefisso. $ stringa;' nella funzione farà il trucco. –

Problemi correlati