我有一个PHP数字数组,我想用一个减号(-)前缀。我认为通过使用explode和implode是可能的,但我对php的了解实际上是不可能做到的。如果你能帮忙的话,我会很感激的。从本质上讲,我想从这个开始:
$array = [1, 2, 3, 4, 5];
字符串对此:
$array = [-1, -2, -3, -4, -5];
型有什么想法吗
a6b3iqyw1#
一种优雅的给数组值加前缀的方法(PHP 5.3+):
$prefixed_array = preg_filter('/^/', 'prefix_', $array);
字符串此外,这比foreach快三倍以上。
foreach
j0pj023g2#
很简单:
foreach ($array as &$value) { $value *= (-1); } unset($value);
字符串除非数组是字符串:
foreach ($array as &$value) { $value = '-' . $value; } unset($value);
型
a1o7rhls3#
在这种情况下,Rohit的答案可能是最好的,但PHP array functions在更复杂的情况下可能非常有用。您可以使用array_walk()对数组中的每个元素执行一个函数,以更改现有数组。array_map()几乎做了同样的事情,但它返回一个新的数组,而不是修改现有的数组,因为看起来你想继续使用同一个数组,你应该使用array_walk()。要使用array_walk()直接处理数组的元素,请通过引用(function(&$item))传递数组的项。从php5.3开始,你可以在array_walk中使用匿名函数:
array_walk()
array_map()
function(&$item)
// PHP 5.3 and beyond! array_walk($array, function(&$item) { $item *= -1; }); // or $item = '-'.$item;
字符串Working example的如果php 5.3对你来说有点太花哨了,就用createfunction():
createfunction()
// If you don't have PHP 5.3 array_walk($array,create_function('&$it','$it *= -1;')); //or $it = '-'.$it;
型Working example
oewdyzsn4#
像这样的东西会做:
array_map(function($val) { return -$val;} , $array)
字符串
zujrkrfu5#
你可以用一个字符串替换“nothing”。因此,要在字符串数组(而不是最初发布的数字)前缀:
$prefixed_array = substr_replace($array, 'your prefix here', 0, 0);
字符串这意味着,对于$array的每个元素,取偏移量为0、长度为0的(零长度)字符串,并将其替换为前缀。参考:* substr_replace *
gmol16396#
$array = [1, 2, 3, 4, 5]; $array=explode(",", ("-".implode(",-", $array))); //now the $array is your required array
aurhwmvo7#
我以前也遇到过同样的情况。
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 ([0] => prefix1 [1] => prefix2 [2] => prefix3 [3] => prefix4 [4] => prefix5)
型print_r(addSuffixToArray($array, 'suffix'));个
print_r(addSuffixToArray($array, 'suffix'));
Array ([0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix)
5n0oy7gb8#
从PHP 7.4开始,你也可以这样做:
$array = array_map(fn($item) => -$item, $array);
字符串Live demo
8条答案
按热度按时间a6b3iqyw1#
一种优雅的给数组值加前缀的方法(PHP 5.3+):
字符串
此外,这比
foreach
快三倍以上。j0pj023g2#
很简单:
字符串
除非数组是字符串:
型
a1o7rhls3#
在这种情况下,Rohit的答案可能是最好的,但PHP array functions在更复杂的情况下可能非常有用。
您可以使用
array_walk()
对数组中的每个元素执行一个函数,以更改现有数组。array_map()
几乎做了同样的事情,但它返回一个新的数组,而不是修改现有的数组,因为看起来你想继续使用同一个数组,你应该使用array_walk()
。要使用
array_walk()
直接处理数组的元素,请通过引用(function(&$item)
)传递数组的项。从php5.3开始,你可以在array_walk中使用匿名函数:
字符串
Working example的
如果php 5.3对你来说有点太花哨了,就用
createfunction()
:型
Working example
oewdyzsn4#
像这样的东西会做:
字符串
zujrkrfu5#
你可以用一个字符串替换“nothing”。因此,要在字符串数组(而不是最初发布的数字)前缀:
字符串
这意味着,对于$array的每个元素,取偏移量为0、长度为0的(零长度)字符串,并将其替换为前缀。
参考:* substr_replace *
gmol16396#
字符串
aurhwmvo7#
我以前也遇到过同样的情况。
为每个数组值添加前缀
字符串
为每个数组值添加后缀
型
现在测试部分:
型
第一个月
结果
型
print_r(addSuffixToArray($array, 'suffix'));
个结果
型
5n0oy7gb8#
从PHP 7.4开始,你也可以这样做:
字符串
Live demo