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

发布于 2024-12-07 22:35:09 字数 242 浏览 0 评论 0原文

我有一个 PHP 数字数组,我想在其前面加上减号 (-)。我认为通过使用爆炸和内爆这是可能的,但我对 php 的了解不可能真正做到这一点。任何帮助将不胜感激。

本质上我想从这个:

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

到这个:

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

有什么想法吗?

I have a PHP array of numbers, which I would like to prefix with a minus (-). I think through the use of explode and implode it would be possible but my knowledge of php is not possible to actually do it. Any help would be appreciated.

Essentially I would like to go from this:

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

to this:

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

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

找个人就嫁了吧 2024-12-14 22:35:09

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

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

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

An elegant way to prefix array values (PHP 5.3+):

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

Additionally, this is more than three times faster than a foreach.

她比我温柔 2024-12-14 22:35:09

简单:

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

除非数组是字符串:

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

Simple:

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

Unless the array is a string:

foreach ($array as &$value) {
    $value = '-' . $value;
}
unset($value);
野却迷人 2024-12-14 22:35:09

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

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

使用 array_walk()< 直接处理数组的元素/code>,通过引用传递数组的项目(function(&$ite​​m))。

从 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;

工作示例

In this case, Rohit's answer is probably the best, but the PHP array functions can be very useful in more complex situations.

You can use array_walk() to perform a function on each element of an array altering the existing array. array_map() does almost the same thing, but it returns a new array instead of modifying the existing one, since it looks like you want to keep using the same array, you should use array_walk().

To work directly on the elements of the array with array_walk(), pass the items of the array by reference ( function(&$item) ).

Since php 5.3 you can use anonymous function in array_walk:

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

Working example

If php 5.3 is a little too fancy pants for you, just use createfunction():

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

Working example

孤单情人 2024-12-14 22:35:09

像这样的事情会做:

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

Something like this would do:

array_map(function($val) { return -$val;} , $array)
原谅过去的我 2024-12-14 22:35:09

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

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

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

参考:substr_replace

You can replace "nothing" with a string. So to prefix an array of strings (not numbers as originally posted):

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

That means, for each element of $array, take the (zero-length) string at offset 0, length 0 and replace it the prefix.

Reference: substr_replace

ヤ经典坏疍 2024-12-14 22:35:09
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
記憶穿過時間隧道 2024-12-14 22:35:09

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

为每个数组值添加前缀

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, '后缀'));

结果

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

I had the same situation before.

Adding a prefix to each array value

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

Adding a suffix to each array value

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

Now the testing part:

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

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

Result

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

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

Result

Array ([0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix)
十二 2024-12-14 22:35:09

从 PHP 7.4 开始,您也可以执行此操作:

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

现场演示

You can also do this since PHP 7.4:

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

Live demo

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文