<?php
namespace
calc
;/**
* php簡單實現算術表示式轉換成逆波蘭式,並求解。
* 僅支援加減乘除四種運算
** require 'calc.php';
* $calc = new calc('(1+9)/2');
* echo $calc->getexpression();
* echo $calc->calculate();
*
*/
class
calc
/** * 解析字串表示式
* 解析字串表示式,將數字和運算子分離,用陣列儲存
* @param string $expression
* @return array
*/protected
function
expressionparase
($expression
)array_push
($data
,$item);
}else
}while
(count
($arr))
;array_push
($data
,implode(''
,$tmp))
;return
$data;}
/** * 生成逆波蘭式
* @param string $expression
*/protected
function
convert
($expression
)elseif(
in_array
($char
,$this
->
_operator))
elseif(
')'==
$char
)else}}
else
else}}
}}while
(count
($this
->
_stackoperator))
else}}
/** * 獲取逆波蘭式
* @return string
*/public
function
getexpression()
/** * 計算逆波蘭式
* @return int
*/public
function
calculate()
elseif(
in_array
($char
,$this
->
_operator))
}return
end(
$stack);
}protected
function
operator($a
,$b,$o
)}}
使用方法:
$calc
=new
calc
("1.1+2*0.6");
echo
$calc
->
calculate()
;
編譯原理 逆波蘭式分析計算
將非字尾式用來表示的算術表示式轉換為用逆波蘭式來表示的算術表示式,並計算用逆波蘭式來表示的算術表示式的值。1 逆波蘭式定義 將運算物件寫在前面,而把運算符號寫在後面。用這種表示法表示的表示式也稱做字尾式。逆波蘭式的特點在於運算物件順序不變,運算符號位置反映運算順序。採用逆波蘭式可以很好的表示簡單算術...
php處理字串格式的計算公式
php處理字串格式的計算公式 有時候我們對每一種產品都有乙個提成公式,而這個計算提成的公式是以字串格式存在表中的 當我們用這個計算公式時,他並不像我們寫的 a 2 3 5 這樣簡單的能計算出結果,而它是個字串 所以,我們就必須把字串轉化為我們能夠處理的結果 而php中的eval 函式可以處理php ...
PHP處理字串格式的計算公式
工作中經常會遇到一些公式需要放到資料表裡某個字段,當我們用這個計算公式時,他並不像我們寫的 result 1 2 5 這樣簡單的能計算出結果,而它是個字串.而php中的eval 函式可以處理php 因此可以用此來解決 以字串格式儲存的計算公式 data model find 1 data formu...