计算php数组的算术元素?

时间:2011-09-29 11:45:27

标签: php arrays

这是我的阵列

$arr = array(1,2,3,4,5);

如何获得计算此表达式((((1-2) -3)-4)-5)的值的结果?

6 个答案:

答案 0 :(得分:3)

第一个条目的2倍减去全部金额 - 看起来很快。

echo (2 * reset($arr)) - array_sum($arr);

答案 1 :(得分:3)

除了第一个元素中的第一个元素之外,只需减去所有元素的总和:

echo array_shift($arr) - array_sum($arr); # -13

要保留数组,请稍微更改计算:

echo $arr[0]*2 - array_sum($arr);  # -13

我们很高兴您没有要求eval

echo eval('return '.implode('-', $arr).';'); # -13

然而,我能给出的最好建议是将逻辑封装到一个类中并用它重载数组。这样对象就可以提供一种计算方法(Demo):

class Operands extends ArrayObject
{
    public function operate($sign)
    {
        $sign = max(-1, min(1, $sign.'1'));
        $arr = $this->getArrayCopy ();
        return $arr[0]*(1-$sign) + $sign*array_sum($arr);
    }
    public function __invoke($sign) {
        return $this->operate($sign);
    }
}

$arr = new Operands($arr);

echo $arr('-'), ', ' , $arr('+');

答案 2 :(得分:0)

<?php echo eval(implode("-", $arr)); ?>

答案 3 :(得分:0)

试试这个:     

$arr = array(1,2,3,4,5);
// load the first number to subtract
$result = $arr[0];
$i = 1;
foreach($arr as $item)
{
    if ($i !=1) // skip the first one
        $result -= $item;
    $i++;
}
echo $result;

?>

答案 4 :(得分:0)

此?

<?php
foreach ($arr as $val)
{
   $calc -= $val;
}

echo $calc;
?>

答案 5 :(得分:0)

与@mOrSa一样,但更具可读性:

<?php
$arr = array(1, 2, 3, 4, 5);

// load the first number to subtract
$result = $arr[0];

for ($i = 1; $i < count($arr); $i++)
{        
    $result -= $arr[i];
}
echo $result;    
?>