• 技术文章 >php教程 >PHP源码

    百度面试题:解析字符串四则表达式

    PHP中文网PHP中文网2016-05-25 17:12:53原创404
    <?php
     
    /**
     * @author yusaint
     * @copyright 2011
     */
    function cal($expr)
    {
        $splittedBy_multi = explode('*', $expr); // (12/3) (2) (12) (12/4)
        $temp = array();
        print_r($splittedBy_multi);
        foreach ($splittedBy_multi as $k => $v) {
     
            $splittedBy_divided = explode('/', $v);
            if (count($splittedBy_divided) > 1) {
                $temp[$k] = intval($splittedBy_divided[0]) * intval($splittedBy_divided[0]);
                foreach ($splittedBy_divided as $val) {
                    $temp[$k] /= intval($val);
                }
            } else
                $temp[$k] = intval($v);
        }
        return array_product($temp);
     
     
    }
    $expr = "10-4+123+100*98*8/100*4*3+3-12/3/4*2*12*12/4+4-8+12/3*12+12";
    $splittedBy_plus = explode('+', $expr); //0=>(4*3)  1=>(3-12/3/4*2*12*12/4) 2=>(4-8)
    $temp = array();
    foreach ($splittedBy_plus as $k => $v) {
        $splittedBy_minus = explode('-', $v); // 3 12/3/4*2*12*12/4
        if (count($splittedBy_minus) > 1) //(3) (12/3/4*2*12*12/4) (4) (8)
            {
            $temp_minus = array();
            foreach ($splittedBy_minus as $key => $value) {
                $temp_minus[$key] = cal($value);
            }
            $minus = 2 * $temp_minus[0];
            foreach ($temp_minus as $value) {
                $minus -= (int)$value;
            }
            $temp[$k] = $minus;
        } else {
            $temp[$k] = cal($v);
        }
     
     
    }
    $sum = 0;
    foreach ($temp as $value) {
        $sum += $value;
    }
    echo 'the parsed value is:' . $sum."\n";
    echo 'the original value is:'.(10-4+123+100*98*8/100*4*3+3-12/3/4*2*12*12/4+4-8+12/3*12+12);
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:PHP分页 upgrade 20130125 下一篇:PHP压缩与解压Zip(PHPZip类)
    千万级数据并发解决方案

    相关文章推荐

    • Yaf框架入门只hello yaf• PHP session实现跨子域的几种办法• PHP常用用的六个处理正则表达式函数• php 完整图片按比例生成缩略图代码• php 日期与日间之差函数
    1/1

    PHP中文网