这是我的阵列
$arr = array(1,2,3,4,5);
如何获得计算此表达式((((1-2) -3)-4)-5)
的值的结果?
答案 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;
?>