为PHP数组的每个项添加前缀

时间:2011-10-01 01:50:53

标签: php arrays explode prefix implode

我有一个PHP数组,我希望用减号( - )作为前缀。我认为通过使用爆炸和内爆它是可能的,但我的PHP知识是不可能实际做到这一点。任何帮助将不胜感激。

基本上我想从此开始:

$array = [1, 2, 3, 4, 5];

到此:

$array = [-1, -2, -3, -4, -5];

有什么想法吗?

7 个答案:

答案 0 :(得分:111)

为数组值添加前缀的优雅方法(PHP 5.3 +):

$prefixed_array = preg_filter('/^/', 'prefix_', $array);

此外,这比foreach快三倍。

答案 1 :(得分:91)

简单

foreach ($array as &$value) {
   $value *= (-1);
}
unset($value);

除非数组是字符串:

foreach ($array as &$value) {
    $value = '-'.$value;
}
unset($value);

答案 2 :(得分:63)

在这种情况下,Rohit's answer可能是最好的,但PHP array functions在更复杂的情况下非常有用。

您可以使用array_walk()对更改现有数组的数组的每个元素执行函数。 array_map()几乎完全相同,但它返回一个新数组而不是修改现有数组,因为看起来你想继续使用相同的数组,你应该使用array_walk()

要使用array_walk()直接处理数组的元素,请按引用(function(&$item))传递数组的项目。

由于php 5.3 ,你可以在array_walk中使用匿名函数:

// PHP 5.3 and beyond!
array_walk($array, function(&$item) { $item *= -1; }); // or $item = '-'.$item;

Working example

如果php 5.3对你来说太过花哨,只需使用createfunction()

// If you don't have PHP 5.3
array_walk($array,create_function('&$it','$it *= -1;')); //or $it = '-'.$it;

Working example

答案 3 :(得分:20)

这样的事情可以做到:

array_map(function($val) { return -$val;} , $array)

答案 4 :(得分:3)

$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array

答案 5 :(得分:0)

这个问题早已被问及回答了,但我以前也有同样的情况

  

为每个数组值添加前缀

function addPrefixToArray(array $array, string $prefix)
    {
                return array_map(function ( $arrayValues) use ($prefix) {
                return $prefix. $arrayValues;
            }, $array);
    }
  

在每个数组值后添加

function addSuffixToArray(array $array, string $suffix)
    {
         return array_map(function ( $arrayValues) use ( $suffix) {
                return $arrayValues. $suffix;
        }, $array);
    }

现在是测试部分

$array = [1, 2, 3, 4, 5];

print_r( addPrefixToArray( $array,'prefix'));

  

结果

Array ( [0] => prefix1 [1] => prefix2 [2] => prefix3 [3] => prefix4 [4] => prefix5 ) 

print_r( addSuffixToArray($array, 'suffix'));

  

结果

Array ( [0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix )

答案 6 :(得分:0)

您可以用字符串替换“ nothing”。因此,要为字符串数组添加前缀(不是最初发布的数字):

substr_replace($the_array, 'your prefix here', 0, 0);

这意味着,对于$ the_array的每个元素,以偏移量为0,长度为0的(零长度)字符串作为前缀。

https://www.php.net/manual/en/function.substr-replace.php