PHP - 如何计算数组中每个值的百分比

时间:2017-06-26 12:55:29

标签: php

在PHP中,我有一个数组:

$a = array(10, 15, 20, 25, 30);

我想为数组$a的每个元素添加5%,所以它看起来像这样:

$a = array(10.5, 15.75, 21, 26.25, 31.5);

我不想使用foreach

7 个答案:

答案 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);

编辑:Working code here.

编辑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);