84

我有一个 PHP 数字数组,我想用减号 (-) 作为前缀。我认为通过使用 explode 和 implode 是可能的,但我对 php 的了解实际上无法做到。任何帮助,将不胜感激。

基本上我想从这个开始:

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

对此:

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

有任何想法吗?

4

7 回答 7

163

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

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

此外,这比foreach.

于 2015-01-23T17:51:22.727 回答
107

简单的:

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

除非数组是字符串:

foreach ($array as &$value) {
    $value = '-' . $value;
}
unset($value);
于 2011-10-01T01:53:27.927 回答
73

在这种情况下,Rohit 的答案可能是最好的,但PHP 数组函数在更复杂的情况下可能非常有用。

您可以使用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;

工作示例

如果 php 5.3 对你来说有点太花哨了,那就用createfunction()

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

工作示例

于 2011-10-01T04:00:24.337 回答
25

这样的事情会做:

array_map(function($val) { return -$val;} , $array)
于 2011-10-01T01:55:10.590 回答
9

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

$prefixed_array = substr_replace($array, 'your prefix here', 0, 0);

这意味着,对于 $array 的每个元素,取偏移量为 0、长度为 0 的(零长度)字符串并将其替换为前缀。

参考:substr_replace

于 2019-04-25T18:59:30.423 回答
6
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
于 2016-09-26T08:29:50.120 回答
5

我以前也有同样的情况。

为每个数组值添加前缀

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)
于 2019-04-17T08:07:45.717 回答