【问题标题】:PHP: Adding prefix strings to array valuesPHP:将前缀字符串添加到数组值
【发布时间】:2010-12-26 23:25:43
【问题描述】:

向数组添加一个或多个特定值的最佳方法是什么? 有点难以解释,但这应该会有所帮助:

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


【解决方案1】:

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

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

【讨论】:

  • $value 前面的 & 是干什么用的?
  • @GDY:这意味着您通过引用而不是通过值传递此参数(默认行为)php.net/manual/en/language.references.pass.php
  • 从技术上讲,您添加的是后缀,而不是前缀。除了$value = ' ' . $value;之外,还有没有更简洁的方式在匿名函数中做前缀?
  • 喜欢这个!谢谢。
【解决方案2】:

使用array_map()

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

【讨论】:

  • 这不会有创建一个全新数组的开销吗?
【解决方案3】:

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

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

输出将是:

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

【讨论】:

  • 请添加一些解释。由于您使用了与问题没有对应关系的变量名和文字,因此您至少可以这样做。
  • 我必须在值的开头和结尾添加什么前缀?
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2013-11-03
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2012-07-18
    • 2011-04-03
    相关资源
    最近更新 更多