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


Add a prefix to each item of a PHP array

我有一个PHP数组的数字,我想前缀一个减号(-)。我认为通过使用爆炸和内爆是可能的,但我的php知识是不可能做到的。如有任何帮助,不胜感激。

我想从这里开始:

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

:

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

任何想法?

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

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

此外,这比foreach快三倍以上。

Simple:

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

除非数组是字符串:

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

在这种情况下,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;
工作示例

这样做:

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

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

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

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

参考:作用

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

我以前也遇到过同样的情况。

为每个数组值添加前缀

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)

从PHP 7.4开始也可以这样做:

$array = array_map(fn($item) => -$item, $array);

现场演示