Je me demande s'il existe quelque chose comme .= pour ajouter du texte au début d'une chaîne, par exemple :
$foo =. 'bar';
ce qui ne fonctionne pas.
Edit : l'exemple était à l'origine $foo =. $bar;
ce qui peut être réalisé avec $bar .= $foo;
Je me demande s'il existe quelque chose comme .= pour ajouter du texte au début d'une chaîne, par exemple :
$foo =. 'bar';
ce qui ne fonctionne pas.
Edit : l'exemple était à l'origine $foo =. $bar;
ce qui peut être réalisé avec $bar .= $foo;
Vous pouvez toujours créer votre propre fonction pour cela :
function prepend($string, $chunk) {
if(!empty($chunk) && isset($chunk)) {
return $string.$chunk;
}
else {
return $string;
}
}
$string
serait le morceau que vous voulez ajouter au début et $chunk
serait le texte auquel vous voulez ajouter quelque chose.
On pourrait dire que les vérifications sont facultatives, mais cette mention permet de ne pas craindre de transmettre une valeur nulle par accident.
Je sais que cette question a été posée/répondue il y a un certain temps, mais je fournis cette réponse car elle est fonctionnellement équivalente bien qu'il ne s'agisse pas d'un opérateur d'assignation et que personne n'a commenté son utilisation pour la concaténation générale de chaînes de caractères.
Vous pouvez envisager l'utilisation de l'option sprintf
( documentation ) de fonctions pour la concaténation de chaînes de caractères. Elle fournit beaucoup plus d'assainissement et de convivialité que la simple combinaison de deux chaînes de caractères avec des opérateurs d'affectation.
$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" */
J'utilise normalement vsprintf
Il est donc plus facile de gérer les positions des valeurs dans les tableaux que dans les arguments individuels.
$vprepend = vsprintf('%2$s%1$s', array('foo', 'bar'));
var_dump($vprepend);
/* string(6) "barfoo" */
De même, avec un tableau de valeurs, on peut simplement implode
l'ensemble des valeurs résultantes pour une simple concaténation de chaînes de caractères.
var_dump(implode('', array('bar', 'foo')));
/* string(6) "barfoo" */
Vous pouvez envelopper la fonction intégrée substr_replace
où les arguments $start et $length peuvent être mis à 0, qui fait précéder le $replacement de $string et renvoie le résultat, comme suit :
function prepend(& $string, $prefix) {
$string = substr_replace($string, $prefix, 0, 0);
}
Un exemple d'utilisation de la fonction d'aide serait :
$email_message = "Jonathan";
$appropriate_greeting = "Dear ";
prepend($email_message, $appropriate_greeting);
echo $email_message;
Si vous êtes adepte de la programmation procédurale, bien sûr.
Tournage Commentaire de Blakethepatton dans une réponse (merci), un moyen de faire cela plus proprement pour les noms de variables plus longs est d'utiliser un fichier référence à la variable comme suit :
$f = &$foo; $f = "bar{$f}";
Cela vous évitera de taper sur le réponse d'Eric V si le nom original de votre variable comporte 12 caractères ou plus.
Une alternative sur une ligne :
$f = 'bar' . ($f = &$foo);
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.