最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用PHP實現(xiàn)的四則運算表達式計算實現(xiàn)代碼

 更新時間:2011年08月02日 22:14:18   作者:  
題目要求:有一個四則運算的字符串表達式,編寫一個函數(shù),計算四則運算的結(jié)果
PHP實現(xiàn):
復制代碼 代碼如下:

<?php
/**
* 計算四則運算表達式
*/
error_reporting(E_ALL);
$exp = '(1+2*(3+5)/4)*(3+(5-4)*2)';
$arr_exp = array();
for($i=0;$i<strlen($exp);$i++){
$arr_exp[] = $exp[$i];
}
$result = calcexp( array_reverse($arr_exp) );
echo $exp . '=' . $result;
function calcexp( $exp ){
$arr_n = array();
$arr_op = array();
while( ($s = array_pop( $exp )) != '' ){
if( $s == '(' ){
$temp = array(); $quote = 1; $endquote = 0;
while( ($t = array_pop($exp)) != '' ){
if( $t == '(' ){
$quote++;
}
if( $t == ')' ){
$endquote++;
if( $quote == $endquote ){
break;
}
}
array_push($temp, $t);
}
$temp = array_reverse($temp);
array_push($arr_n, calcexp($temp) );
}else if( $s == '*' || $s == '/' ){
$n2 = array_pop($exp);
if( $n2 == '(' ){
$temp = array(); $quote = 1; $endquote = 0;
while( ($t = array_pop($exp)) != '' ){
if( $t == '(' ){
$quote++;
}
if( $t == ')' ){
$endquote++;
if( $quote == $endquote )
break;
}
array_push($temp, $t);
}
$temp = array_reverse($temp);
$n2 = calcexp($temp);
}
$op = $s;
$n1 = array_pop($arr_n);
$result = operation($n1, $op, $n2);
array_push($arr_n, $result);
}elseif( $s == '+' || $s == '-' ){
array_push($arr_op, $s);
}else{
array_push($arr_n, $s);
}
}
$n2 = array_pop($arr_n);
while( ($op = array_pop($arr_op)) != '' ){
$n1 = array_pop($arr_n);
$n2 = operation($n1, $op, $n2);
}
return $n2;
}
function operation( $n1, $op, $n2 ){
switch ($op) {
case '+':
return intval($n1) + intval($n2);
break;
case '-':
return intval($n1) - intval($n2);
break;
case '*':
return intval($n1) * intval($n2);
break;
case '/':
return intval($n1) / intval($n2);
break;
}
}

這個實現(xiàn)方式中使用了兩個堆棧,一個用來存儲數(shù)字,一個用來存儲運算符,遇到括號以后就遞歸進入括號內(nèi)運算,實現(xiàn)方式有點笨拙,后面補充一下“逆波蘭表達式”的算法實現(xiàn)。

相關文章

  • PHP中遍歷數(shù)組的三種常用方法實例分析

    PHP中遍歷數(shù)組的三種常用方法實例分析

    這篇文章主要介紹了PHP中遍歷數(shù)組的三種常用方法,結(jié)合實例形式分析了php針對數(shù)組使用for、foreach、list()、each()和while聯(lián)合使用遍歷數(shù)組相關操作技巧,需要的朋友可以參考下
    2019-06-06
  • PHP處理JSON字符串key缺少雙引號的解決方法

    PHP處理JSON字符串key缺少雙引號的解決方法

    這篇文章主要介紹了PHP處理JSON字符串key缺少雙引號的解決方法,是非常常見的一類錯誤處理情況,需要的朋友可以參考下
    2014-09-09
  • PHP實現(xiàn)支持SSL連接的SMTP郵件發(fā)送類

    PHP實現(xiàn)支持SSL連接的SMTP郵件發(fā)送類

    這篇文章主要介紹了PHP實現(xiàn)支持SSL連接的SMTP郵件發(fā)送類,實例分析了php實現(xiàn)smtp郵件發(fā)送類的原理與技巧,以及支持SSL連接的方法,需要的朋友可以參考下
    2015-03-03
  • php獲取指定范圍內(nèi)最接近數(shù)的方法

    php獲取指定范圍內(nèi)最接近數(shù)的方法

    這篇文章主要介紹了php獲取指定范圍內(nèi)最接近數(shù)的方法,可實現(xiàn)根據(jù)給定區(qū)間長度劃分各個區(qū)間,并在其中尋找與給定數(shù)最接近的數(shù),需要的朋友可以參考下
    2015-06-06
  • PHP類型約束用法示例

    PHP類型約束用法示例

    這篇文章主要介紹了PHP類型約束用法,結(jié)合實例形式分析了php針對特定場合及特定類型進行強制類型約束的操作方法,需要的朋友可以參考下
    2016-09-09
  • PHP生成唯一訂單號

    PHP生成唯一訂單號

    這篇文章主要給大家介紹了一位網(wǎng)友PHP生成唯一訂單號的思路和示例,感覺非常不錯,需要的朋友可以參考下
    2015-07-07
  • web php include攻防世界php安全示例詳解

    web php include攻防世界php安全示例詳解

    這篇文章主要介紹了php安全防護的防注入include文件示例詳解,有需要的朋友可以借鑒參考下, 希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-10-10
  • php實現(xiàn)批量修改文件名稱的方法

    php實現(xiàn)批量修改文件名稱的方法

    這篇文章主要介紹了php實現(xiàn)批量修改文件名稱的方法,涉及php針對文件的遍歷及文件名的替換操作相關技巧,需要的朋友可以參考下
    2016-07-07
  • thinkphp查詢,3.X 5.0方法(親試可行)

    thinkphp查詢,3.X 5.0方法(親試可行)

    下面小編就為大家?guī)硪黄猼hinkphp查詢,3.X 5.0方法(親試可行)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Mac OS下配置PHP+MySql環(huán)境

    Mac OS下配置PHP+MySql環(huán)境

    本文詳細介紹了在mac OS系統(tǒng)下安裝配置PHP+MySql環(huán)境的詳細步鄹,十分的全面,這里推薦給有相同需求的小伙伴們。
    2015-02-02

最新評論

高唐县| 榆中县| 泰安市| 彰化县| 银川市| 贡山| 宣汉县| 秀山| 华安县| 清丰县| 政和县| 锡林郭勒盟| 贵阳市| 吴忠市| 莆田市| 德兴市| 东阳市| 庄河市| 丹凤县| 浏阳市| 多伦县| 榆树市| 巴林右旗| 西藏| 新宁县| 新沂市| 砀山县| 北海市| 海门市| 阆中市| 通辽市| 乐陵市| 炉霍县| 台东县| 忻州市| 邵阳县| 临湘市| 莒南县| 依安县| 正镶白旗| 阳原县|