来源:其他FizzBuzzWhizz :http://www.oschina.net/code/snippet_1414453_35450;
正则复习 php class,写的不太好,抛砖引玉 。
- class NumberGame{
- private $str="start
";
- private $num=0;
- private $Fnum=0;
- private $snumarr=array();
- private $arr_key=array();
- function __construct($Fnum,$num,$snumarr){
- if($Fnum>=1 && $num>$Fnum && is_array($snumarr) && count($snumarr)>0){
- //$this->Fnum=$Fnum;
- //$this->num=$num;
- $this->snumarr=$snumarr;
- for($i=$Fnum;$i<=$num;$i ){
- //rule 5
- $this->arr_key=array_keys($snumarr);
- $typeB = strpbrk($i, current($this->arr_key) )?true:false;
- if($typeB){
- $this->str.= current($snumarr)." (".$i.")
";
- }else{
- $this->rule($i);
- }
- }
- }
- }
- function rule($i){
- $str="";
- for($j=0;$jsnumarr);$j ){
- $key=$this->arr_key[$j];
- //var_dump($key);
- if(is_int($i/$key)){
- $str.=$this->snumarr[$key];
- }
- }
- if(empty($str)){
- $str=$i."
";
- }else{
- $str.= " (".$i.")
";
- }
- $this->str.=$str;
- }
- function answer(){
- return $this->str;
- }
- }
-
-
- $snumarr=array('3'=>'Fizz','5'=>'Buzz','7'=>'Whizz');
-
- $ng=new NumberGame(1,100,$snumarr);
-
- echo $ng->answer();
复制代码
|