PHP の文字列の配列に、それぞれ特定の接頭辞や接尾辞を追加する方法です。preg_filterを使うと、foreachなどのループを使わずに追加できます。
接頭辞(prefix)を追加する
それぞれの文字列の最初に「あいさつは、」を追加してみます。追加するときはpreg_filterを使用します。
$string_array = [
'おはよう',
'こんにちは',
'こんばんは',
];
$prefix = 'あいさつは、';
$prefixed_array = preg_filter('/^/', $prefix, $string_array);
preg_filter()… 第三引数の配列($string_array)を1つずつ回し、第一引数(/^/)にマッチした文字列を第二引数($prefix)で置換する
ここでは正規表現を使って/^/としているので、「文字列の最初をあいさつは、に置換する」となり、それぞれの文字列の最初にあいさつは、が追加される形になります。
$prefixed_arrayを展開してみると、接頭辞が追加されています。
array(3) {
[0]=>
string(30) "あいさつは、おはよう"
[1]=>
string(33) "あいさつは、こんにちは"
[2]=>
string(33) "あいさつは、こんばんは"
}
接尾辞(suffix)を追加する
やり方は prefix とほぼ同じ、正規表現を書き換えるだけです。それぞれの文字列の最後に「!」を追加してみます
$string_array = [
'おはよう',
'こんにちは',
'こんばんは',
];
$suffix = '!!';
$suffixed_array = preg_filter('/$/', $suffix, $string_array);
ここでは正規表現を使って/$/としているので、「文字列の最後」に!!が追加される形になっています。
$suffixed_arrayを展開してみると、接尾辞が追加されています。
array(3) {
[0]=>
string(15) "おはよう!!"
[1]=>
string(18) "こんにちは!!"
[2]=>
string(18) "こんばんは!!"
}
参考
Stack Overflow にあった Add a prefix to each item of a PHP array を参考(というか丸写し…)にしましたが、この方法はforeachの3倍早いらしい?です。
Additionally, this is more than three times faster than a
Dávid Horváth – Add a prefix to each item of a PHP arrayforeach.
こういった関数はforeachなどのループより遅い印象がありましたが、そんなことはないんですね。
また、foreachはunsetを使わないといけないシーンがあったり、ただのループというのはイマイチ何をしているか分かりにくいので、array_*系の PHP 関数を使っていきたいところです。