PHP: добавление префиксных строк к значениям массива

Каков наилучший способ добавить определенное значение или значения в массив? Своего трудно объяснить, но это должно помочь:

<?php
$myarray = array("test", "test2", "test3");
$myarray = array_addstuff($myarray, " ");
var_dump($myarray);
?>

Какие выходы:

array(3) {
  [0]=>
  string(5) " test"
  [1]=>
  string(6) " test2"
  [2]=>
  string(6) " test3"
}

Вы можете сделать это следующим образом:

function array_addstuff($a, $i) {
    foreach ($a as &$e)
        $e = $i . $e;
    return $a;
}

Но мне интересно, есть ли более быстрый способ, или если эта функция встроена.

Ответ 1

В случае, если вы используете версию PHP >= 5.3:

$array = array('a', 'b', 'c');
array_walk($array, function(&$value, $key) { $value .= 'd'; } );

Ответ 2

Используйте array_map()

$array = array('a', 'b', 'c');
$array = array_map(function($value) { return ' '.$value; }, $array);

Ответ 3

Используйте array_walk. В PHP 5.3 вы можете использовать анонимный, чтобы определить этот обратный вызов. Поскольку вы хотите изменить фактический массив, вы должны указать первый параметр обратного вызова как pass-by-reference.

Ответ 4

Ниже код добавит префикс_ в качестве префикса для каждого значения элемента:

$myarray = array("test", "test2", "test3");    
$prefixed_array = preg_filter('/^/', 'prefix_', $myarray);

Выход будет:

Array ( [0] => prefix_test [1] => prefix_test2 [2] => prefix_test3 )