为平面数组的每个值添加前缀字符串

问题描述 投票:0回答:5

向数组添加一个或多个特定值的最佳方法是什么?

<?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;
}

但是我想知道是否有更快的方法,或者这个功能是否是内置的。

php arrays replace prefix prepend
5个回答
52
投票

如果您使用的 PHP 版本 >= 5.3:

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

32
投票

使用array_map()

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

14
投票

下面的代码将添加“prefix_”作为每个元素值的前缀:

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

输出将是:

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

3
投票

使用array_walk。在 PHP 5.3 中,您可以使用匿名来定义该回调。因为要修改实际数组,所以必须将回调的第一个参数指定为按引用传递。


0
投票

PHP 已经有一个本机函数来替换您的

array_addstuff()
函数,并且它不需要正则表达式 --
substr_replace()

代码:(演示

$myarray = ["test", "test2", "test3"];

var_export(
    substr_replace($myarray, ' ', 0, 0)
);

输出:

array (
  0 => ' test',
  1 => ' test2',
  2 => ' test3',
)
© www.soinside.com 2019 - 2024. All rights reserved.