在PHP中,我有一个数组:
$a = array(10, 15, 20, 25, 30);
我想为数组$a
的每个元素添加5%,所以它看起来像这样:
$a = array(10.5, 15.75, 21, 26.25, 31.5);
我不想使用foreach
。
答案 0 :(得分:3)
使用array_map()
:
$a = array(10, 15, 20, 25, 30);
$a = array_map(function($value) { return $value * 1.05; }, $a);
给予:array(10.5, 15.75, 21, 26.25, 31.5);
答案 1 :(得分:1)
试试这个
<?php
$a = array(10, 15, 20, 25, 30);;
$output = array_map(function($val) { return $val + ($val*5/100); }, $a);
print_r($output);
?>
输出: -
Array
(
[0] => 10.5
[1] => 15.75
[2] => 21
[3] => 26.25
[4] => 31.5
)
答案 2 :(得分:1)
array_map函数应该是您正在寻找的解决方案(documentation here)。
我想你必须创建一个这样的函数:
function fivePercent($n)
{
return($n * 1.05);
}
并使用array_map在数组中的每个数字上调用它:
$b = array_map("fivePercent", $a);
编辑2:根据answer here,使用foreach更快,但由于你要求不使用它,调用命名函数要比在array_map调用中编写函数快得多。无论如何,对于小型阵列来说无关紧要,只要在有大量数据需要处理时就考虑一下。
答案 3 :(得分:0)
这是您的自定义功能
$arr = array_map(function($i){
return $i+($i*0.05);
}, $arr);
print_r($arr);
以下是code。
array_map - 将回调应用于给定数组的元素
答案 4 :(得分:0)
function myfunction($num)
{
return($num + ($num * .05));
}
$a=array(10, 15, 20, 25, 30);
print_r(array_map("myfunction",$a));
输出:
Array ( [0] => 10.5 [1] => 15.75 [2] => 21 [3] => 26.25 [4] => 31.5 )
答案 5 :(得分:0)
使用php
的Array_map函数$a = array(10, 15, 20, 25, 30);
$arrReturn = array_map("increment", $a);
print_r($arrReturn);
function increment($n){
$return = $n + ($n * .5);
return $return;
}
答案 6 :(得分:0)
当然,可以使用语言构造来循环数组,并且正如其他几个答案所证明的那样 array_map()
可以完成这项工作,但是当您想将用户函数应用于数组中的每个元素时,这就是 array_walk()
的设计目的。这些值在迭代时“通过引用修改”,而不是创建一个全新的数组,然后用新返回的数组覆盖旧数据。
使用 Mulitplication Assignment Operator 对遇到的每个值应用 5% 的提升。
代码:(Demo)
function fivePercentIncrease(&$value) {
$value *= 1.05;
}
$a = [10, 15, 20, 25, 30];
array_walk($a, 'fivePercentIncrease');
var_export($a);
或者通过匿名函数:(Demo)
$a = [10, 15, 20, 25, 30];
array_walk($a, function(&$value) { $value *= 1.05; });
var_export($a);
或者通过匿名函数使用 PHP7.4 的箭头函数语法:(Demo)
$a = [10, 15, 20, 25, 30];
array_walk($a, fn(&$value) => $value *= 1.05);
var_export($a);