为 PHP 数组的每一项添加前缀
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
为数组值添加前缀的优雅方式 (PHP 5.3+):
此外,这比
foreach
快三倍以上。An elegant way to prefix array values (PHP 5.3+):
Additionally, this is more than three times faster than a
foreach
.简单:
除非数组是字符串:
Simple:
Unless the array is a string:
在这种情况下,罗希特的答案 可能是最好的,但是 PHP 数组函数 可以在更复杂的情况下非常有用。
您可以使用
array_walk()
对数组的每个元素执行函数来更改现有数组。array_map()
几乎可以完成同样的事情,但它返回一个新数组而不是修改现有数组,因为看起来您想继续使用相同的数组,所以您应该使用array_walk()
。使用
array_walk()< 直接处理数组的元素/code>
,通过引用传递数组的项目(
function(&$item)
)。从 php 5.3 开始,您可以在 array_walk 中使用匿名函数:
工作示例
如果 php 5.3 对你来说有点过于花哨,只需使用
createfunction()
:工作示例
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 usearray_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:
Working example
If php 5.3 is a little too fancy pants for you, just use
createfunction()
:Working example
像这样的事情会做:
Something like this would do:
您可以用字符串替换“nothing”。因此,要为字符串数组(不是最初发布的数字)添加前缀:
这意味着,对于 $array 的每个元素,采用偏移量 0、长度 0 处的(零长度)字符串并将其替换为前缀。
参考:substr_replace
You can replace "nothing" with a string. So to prefix an array of strings (not numbers as originally posted):
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
我以前也遇到过同样的情况。
为每个数组值添加前缀
为每个数组值添加后缀
现在是测试部分:
print_r(addPrefixToArray($array, 'prefix'));
结果
print_r(addSuffixToArray($array, '后缀'));
结果
I had the same situation before.
Adding a prefix to each array value
Adding a suffix to each array value
Now the testing part:
print_r(addPrefixToArray($array, 'prefix'));
Result
print_r(addSuffixToArray($array, 'suffix'));
Result
从 PHP 7.4 开始,您也可以执行此操作:
现场演示
You can also do this since PHP 7.4:
Live demo