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;
}
Но мне интересно, есть ли более быстрый способ, или эта функция встроена.
4 ответа
Решение
В случае, если вы используете версию PHP>= 5.3:
$array = array('a', 'b', 'c');
array_walk($array, function(&$value, $key) { $value .= 'd'; } );
Используйте array_map()
$array = array('a', 'b', 'c');
$array = array_map(function($value) { return ' '.$value; }, $array);
Код ниже добавит префикс_ в качестве префикса к каждому значению элемента:
$myarray = array("test", "test2", "test3");
$prefixed_array = preg_filter('/^/', 'prefix_', $myarray);
Выход будет:
Array ( [0] => prefix_test [1] => prefix_test2 [2] => prefix_test3 )
Используйте array_walk. В PHP 5.3 вы можете использовать анонимный для определения этого обратного вызова. Поскольку вы хотите изменить фактический массив, вы должны указать первый параметр обратного вызова в качестве передачи по ссылке.