2011-08-18 5 views
68

preguntando si hay algo similar. = Para añadir texto al principio de una cadena, por ejemplo .:Cualquier equivalente a. = Para agregar al comienzo de la cadena en PHP?

$foo =. 'bar'; 

que no funciona.

Editar: ejemplo fue originalmente $foo =. $bar; que se puede conseguir con $bar .= $foo;

+4

'$ bar. = $ Foo'? –

+0

Respondo por James aunque debería haber escrito una respuesta ... – Christian

+4

Eso agrega '$ foo' a' $ bar', en lugar de anteponer '$ bar' a' $ foo'. El resultado es similar, pero creo que quiere mutar '$ foo'. –

Respuesta

98

Nop. Pero se puede hacer

$foo = "bar" . $foo 
+3

'.', not' + '... –

+7

Urgh tienes razón. He estado haciendo demasiado JavaScript últimamente. –

+1

sí, pero cuando parece: '$ foo ['bar'] ['bork'] [$ bork] = 'bar'. $ Foo ['bar'] ['bork'] [$ bork];' comienza a preguntarse por qué no hay solo un atajo como. = – 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

Siempre podría hacer su propia función para la que:

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

$string sería la pieza que desea anteponer y $chunk sería el texto que desea algo antepuesto a ella.

Podría decir que los controles son opcionales, pero al tenerlos allí, no tiene que preocuparse por pasar un valor nulo por accidente.

+0

Bien hecho, pero en realidad no hace las cosas más fáciles :) – yuttadhammo

+1

Gracias, tienes razón. Definitivamente no es tan fácil o rápido como algo incorporado. Siéntase libre de copiar y pegar si eso ayuda a hacerlo más fácil: D – Aaron

+4

Si algo está '! Empty' también es siempre' isset', no es necesario hacer esta doble verificación. Además, dado que '$ chunk' es un parámetro requerido de la función, * se * debe pasar a la función o PHP se quejará. Esto significa que esta verificación se puede abreviar a 'if ($ chunk)' (para ver si es * falsy * a.k.a. "empty"). Pero, si '$ chunk' no contiene nada, de todos modos, nada sucederá. Entonces, todo el cuerpo de la función se puede abreviar como 'return $ string. $ chunk'. Lo que significa que toda esta función es bastante innecesaria. – deceze

2

Sé que esto fue preguntado/respondido hace un tiempo, pero proporcionando esta respuesta ya que es funcionalmente equivalente a pesar de que no es un operador de asignación y nadie comentó sobre su uso para la concatenación general de cadenas.

Es posible que desee examinar el uso de la familia de funciones sprintf (documentation) para la concatenación de cadenas. Proporciona mucha más desinfección y usabilidad que simplemente combinar dos cadenas con operadores de asignación.

$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, ya que se trabaja con matrices es más fácil de manejar que las posiciones de valor argumentos individuales.

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

También con una matriz de valores, uno puede simplemente implode el conjunto resultante de valores para sencilla concatenación de cadenas.

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

Puede envolver la función incorporada substr_replace, donde los argumentos $ inicio y $ longitud se pueden ajustar a 0, que antepone la sustitución $ a $ cadena y devuelve el resultado, así:

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

Un ejemplo de uso de la función de ayuda sería:

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

Si usted está en la programación de procedimiento, es decir.

+0

No veo el interés de usar substr_replace; haciendo un simple '$ string = $ prefix. $ string;' en la función hará el truco. –

Cuestiones relacionadas