PHP:向数组值添加前缀字符串

25

如何向数组中添加特定的值或数值?

有点难以解释,但这可能会有所帮助:

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

但是我想知道是否有更快的方法,或者是否有内置的函数。


看看我的答案,没有更快的方法,确实有一个内置函数,但对于这个实现来说,证明它更慢。 - Daniel Andres Acevedo
4个回答

50

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

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

$ value 前面的 & 是什么意思? - GDY
1
@GDY:这意味着你正在通过引用而不是值(默认行为)传递此参数。https://www.php.net/manual/en/language.references.pass.php - leochab
从技术上讲,您正在添加后缀而不是前缀。除了$value = ' ' . $value;之外,在匿名函数中有更简洁的方法来执行前缀吗? - thelr
像这样的!谢谢。 - Mr. Jo

31

使用array_map()

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

这样做会不会增加创建一个全新数组的开销? - skeggse

14

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

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

输出结果将是:

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

2
请添加一些解释。由于您使用的变量名和文字与问题无关,因此这是您可以做的最少的事情。 - trincot
1
我需要在值的开头和结尾添加前缀吗? - Muhammad Hassaan

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接