向数组添加一个或多个特定值的最佳方法是什么?
<?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 版本 >= 5.3:
$array = array('a', 'b', 'c');
array_walk($array, function(&$value, $key) { $value .= 'd'; } );
$array = array('a', 'b', 'c');
$array = array_map(function($value) { return ' '.$value; }, $array);
下面的代码将添加“prefix_”作为每个元素值的前缀:
$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 中,您可以使用匿名来定义该回调。因为要修改实际数组,所以必须将回调的第一个参数指定为按引用传递。
PHP 已经有一个本机函数来替换您的
array_addstuff()
函数,并且它不需要正则表达式 --substr_replace()
。
代码:(演示)
$myarray = ["test", "test2", "test3"];
var_export(
substr_replace($myarray, ' ', 0, 0)
);
输出:
array (
0 => ' test',
1 => ' test2',
2 => ' test3',
)