程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 自定義范圍,自定義運算符,自定義運算次數

自定義范圍,自定義運算符,自定義運算次數

編輯:關於PHP編程

<?php

/**
 * 
 * 出題引擎一枚
 *
 * @author Tourmaline
 * @copyright (c) 2013, Unary Inc.
 */
class QuestionEngine {

    /**
     * 出題范圍
     * @var string $scope
     */
    public $scope = array(1, 100);

    /**
     * 包含的運算符,含有多個則混合出題
     * @var string $operators 
     */
    public $operators = '+-';

    /**
     * 運算次數
     * @var int 
     */
    public $optTimes = 1;

    public function generate() {
        //按運算次數產生一組數值
        start:
        for ($index = 0; $index < $this->optTimes + 1; $index++) {
            $elements[] = $this->randomValue();
        }
        $operatorType = strlen($this->operators); //有幾個運算符供選擇
        //開始組裝算式
        $question = '';
        for ($index = 0; $index < count($elements); $index++) {
            $question.=' ' . $elements[$index] . ' '; //放一個數字進來
            if ($index < count($elements) - 1)//如果不是最後一個數字的話,在後面加個運算符
                $question.=substr($this->operators, mt_rand(0, $operatorType - 1), 1);
        }

        eval('$anwser = ' . $question . ';');
        if ($anwser < 0) {  //排除結果為負數的情況
            $elements = array();
            goto start;     //需PHP5.3的支持
        }

        echo "$question= " . $anwser;
    }

    /**
     * 產生一個范圍內的隨機值
     * 
     * @return int
     */
    protected function randomValue() {
        return mt_rand($this->scope[0], $this->scope[1]);
    }

}

測試

 

<?php

include 'QuestionEngine.class.php';
$hello = new QuestionEngine();
$hello->generate();
?>

結果:26 + 85 = 111

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved