- $string = "#data_1 / #data_2";
- class Operate{
- private $params;
- private $dataarray;
- private $result;
- private function getResult() {
- return $this ->result;
- }
- プライベート関数 setResult($result) {
- $this->result = $result;
- }
- プライベート関数 getDataarray() {
- return $this->dataarray;
- }
-
- プライベート関数 setDataarray($dataarray) {
- $this->dataarray = $dataarray;
- }
- プライベート関数 getParams() {
- return $this->params;
- }
- パブリック関数 setParams($params) {
- $this->params = $params;
- }
- プライベート関数 add($data_1,$data_2){
- return $data_1+$data_2;
- }
- プライベート関数minus($data_1,$data_2){
- return $data_1-$data_2;
- }
- プライベート関数 multiply($data_1,$data_2){
- return $data_1*$data_2;
- }
- プライベート関数除算($data_1,$data_2){
-
- return $data_1/$ data_2;
-
- }
- プライベート関数 stringtoarray(){
- $params = $this->getParams();
- $dataarray =explode(" ", $params);
- $this->setDataarray($dataarray);
-
- }
-
- プライベート関数 getpos($array){
-
- $pos = array();
- $nums = sizeof($array);
- for ($i=0;$i if(!is_numeric($array[$i])){
- $pos[] = $i;
- }
- }
- $pos を返します。
- }
- プライベート関数 getdividepos(){
- $array = $this->getDataarray();// ||$expressionarray
- $pos = array();
- $nums = sizeof($array);
- for ($ i=0;$i if($array[$i]=="/"){
- $pos[] = $i;
- }
- }
- return $pos;
- }
- プライベート関数 iszero(){
- $dataarray = $this->getDataarray();
- //print_r($dataarray);
- $array = $this->getdividepos(); // ||$devidpos
- //print_r($array);
- $nums = sizeof($array);
- echo "
iszero nums:".$nums." " ;
- if ($nums==0){
- $this->setResult(1);
- }else{
- for ($i=0;$i $key = $array [$i]+1;
- //$key = $i + 1;
- echo "
key :$key "; - //echo "data:".$dataarray[ $key];
- $data = (int)($dataarray[$key]);
- echo "data:".$data."
"; - if ($data==0){
- $this->setResult(0);
- }
- else {
- $this-> ;setResult($data);
- }
- }
- }
- }
-
- public function main(){
- $this->stringtoarray();
- $dataarray = $this->getDataarray(); //array("#data_1","/","#data_2");
- print_r($dataarray);
- $dividepos = $this->iszero();
- $result = $this->getResult( );
- echo "reslut:".$result."
"; - if($result==0){
- return 0;
- }else{
- $operatepos = $this->getpos( $dataarray);
- $nums = sizeof($operatepos);
- for($i=0;$i $pos = $operatepos[$i];
- $operate = $dataarray[$pos];
- echo "operate:".$operate."
"; - switch ($operate){
- case "+":
- $key1 = $pos - 1;
- $key2 = $pos + 1;
- $data_1 = $dataarray[$key1];
- $data_2 = $dataarray[$key2];
- $tempdata = $this->add($data_1, $data_2);
- return $tempdata;
- case "-" :
- $key1 = $pos - 1;
- $key2 = $pos + 1;
- $data_1 = $dataarray[$key1];
- $data_2 = $dataarray[$key2];
- $tempdata = $this->マイナス($data_1, $data_2);
- return $tempdata;
- case "*":
- $key1 = $pos - 1;
- $key2 = $pos + 1;
- $data_1 = $dataarray[$key1];
- $data_2 = $dataarray[$key2];
- $tempdata = $this->multiply($data_1, $data_2);
- return $tempdata;
- case "/":
- $key1 = $pos - 1;
- $ key2 = $pos + 1;
- $data_1 = $dataarray[$key1];
- $data_2 = $dataarray[$key2];
- $tempdata = $this->divide($data_1, $data_2);
- return $ tempdata;
- }
-
-
- }
-
- }
-
-
- }
-
-
- }
-
-
- $data_3 = "2 * 3";
- $compute = new Operate();
- $compute ->setParams($データ_3 );
- echo "結果:".$compute->main();
-
复制代
|