对动态数组执行数学计算

时间:2016-03-21 20:04:09

标签: php arrays

我有一个动态阵列 让我们假设

pointer-event: none;

其结果将是20-5 = 5

未定义数组大小,如何动态解决?

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码。当然,它有一些局限性。取决于你想做什么以及你为什么这样做。

<?php

$array = array(
    '20',
    '-',
    '5',
    '*',
    '10'
);

$output = null;
$symbol = null;
foreach ($array as $item) {
    if ($item == '+' || $item == '-' || $item == '*' || $item == '/') {
        if ($output === null) {
            die("First item should be numeric! ");
        }
        $symbol = $item;
        continue;
    } elseif (!is_numeric($item)) {
        die("unknown symbol: " . $item);
    }

    // is numeric
    // first symbol

    if ($output == null) {
        $output = $item;
        continue;
    }

    if ($symbol === null) {
        die('Two numbers in a row!!');
    }

    switch ($symbol) {
        case '+':
            $output += $item;
            break;
        case '-':
            $output -= $item;
            break;
        case '*':
            $output *= $item;
            break;
        case '/':
            $output /= $item;
            break;

    }
}

echo "Calculation is: " . $output;

答案 1 :(得分:1)

phps最讨厌和害怕功能的少数情况之一派上用场。

邪恶eval()

$input = array('20', '-', '5');

// build formula from array by glueing values together
$formula = implode(' ', $input);

// execute the formula and store result in $result
eval('$result  = ' . $formula . ';');

// voila!
echo $formula . ' = ' . $result;

使用eval()的好处是你可以使用php中已知的所有数学运算,甚至完全支持括号的处理。

访问http://sandbox.onlinephpfunctions.com/code/71ffc94238a5510cd7b24632fc7a8b9b5cb2c2c0以获取更多为测试定义的公式的工作示例。