将字符串连接到所有数组项中:Php

10

我有一个这个 PHP片段:

<?php
  $colors = array('red','green','blue');
  foreach ($colors as &$item)
  {
    $item = 'color-'.$item;
  }
  print_r($colors);
?>  

输出:

Array
(
  [0] => color-red
  [1] => color-green
  [2] => color-blue
)

有没有更简单的解决方案?

(类似于这样的一些PHP数组函数array_insert_before_all_items($colors,"color-"))?

谢谢

6个回答

18

方法array_walk可以让你使用回调函数“访问”数组中的每个项。在php 5.3版本中,甚至可以使用匿名函数

PHP 5.3之前的版本:

function carPrefix(&$value,$key) {
  $value="car-$value";
}
array_walk($colors,"carPrefix");
print_r($colors);

较新的匿名函数版本:

array_walk($colors, function (&$value, $key) {
   $value="car-$value";
});
print_r($colors);

如果您不打算使用“$key”,请不要声明它。 - mickmackusa

6

使用array_map的另一种示例:http://php.net/manual/en/function.array-map.php

PHP:

$colors = array('red','green','blue');

$result = array_map(function($color) {
    return "color-$color";
}, $colors);

输出 ($result):

array(
    'color-red',
    'color-green',
    'color-blue'
)

3
对于较旧版本的php,这应该可以工作。
foreach ($colors as $key => $value) {
$colors[$key] = 'car-'.$value; //concatinate your existing array with new one
}
print_r($sbosId);

结果:

Array
(
[0] => car-red
[1] => car-green
[2] => car-blue
)

1

试试这个:

$colors = array('red','green','blue');

function prefix_car( &$item ) {
    $item = "car-{$item}";
}

array_walk( $colors, 'prefix_car');

它应该以与您当前方式相同的方式工作,尽管可能会更加严格;array_walk比手动循环提供了更多的灵活性。


0
$colors = array('red','green','blue');

$prefix = "car-";

$color_flat = $prefix . implode("::" . $prefix,$colors);

$colors = explode("::",$color_flat);

print_r($colors);

0
$colors = array('red','green','blue');
$colors = substr_replace($colors, 'color-', 0, 0);
print_r($colors);

3
请为您的代码添加一些说明。 - Panwen Wang

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