用于检查匹配数字的PHP函数

时间:2016-01-24 01:10:47

标签: php function while-loop

我目前正在自学网络开发/编程并学习php我已经构建了一个简单的程序。该程序接受用户输入并基于一系列数学算法并计算7个随机抽奖号码。代码工作正常,但我想改进它。代码非常重复,我想通过创建自己的函数来简化它。我创建了第一个接受用户输入的函数,只做一些数学然后返回一些值。

例如......

<?php 

     function some_maths($int1 $int2 $int3){

         $x = $int1 + $int2; 
         $y = $int2 * $int3; 
         $z = $y * $x; 
         return $x
         ....}

所以这很简单,但我现在要做的是取X,Y,Z的值并创建一个功能,检查以确保它们不匹配,或者它们是&#39;不小于1或大于59.我在原始代码中使用了一个while循环,如下所示:

while($x == $y || $x == $z || $x <1 || $x >59){

     if( x> 59 || x < 1){ 
       if (x<1){
           do{ $x+=$int}while($x <1);
       }elseif ($x > 59){
           do{ $x-=$int}while($x >59); 
     }else $x++; 
}

这似乎工作正常,但我不想一遍又一遍地重复相同的代码。我相信必须有更好的方法吗?我可以将值放入数组中,也许这样做吗?什么是最好的解决方案?

2 个答案:

答案 0 :(得分:0)

你的问题有点模糊但是如果我必须写一个函数来检查三个数字是否相等并且是&lt; 59和&gt; 1这就是我要做的事情

function validateNumbers($x , $y , $z)
{
    if(equal($x,$y)) return false;
    if(equal($x,$z)) return false;
    if(equal($y,$z)) return false;
    if($x>59||$x<1) return false;
    if($y>59||$y<1) return false;
    if($z>59||$z<1) return false;
    return true;
}

function equal($x , $y)
{
    if($x == $y)return true;
    else return fasle;
}

答案 1 :(得分:0)

到目前为止,我只看到两个(相当简单)的事情:

  1. 第一个示例中的函数原型缺少参数之间的逗号。它应该是function some_maths($int1 $int2 $int3)

  2. 而不是function some_maths($int1, $int2, $int3)
  3. 在您的第二个示例中,缺少结束}。但是,如果我正确地解释你的东西,外部if - 子句是多余的。因此,该片段可以简化为:

  4. 第二个例子:

    while($x == $y || $x == $z || $x <1 || $x >59){
        if (x<1){
            do{ $x+=$int}while($x <1);
        }
        elseif ($x > 59){
            do{ $x-=$int}while($x >59); 
        }
        else $x++;     
    }
    

    可能还有更多的改进空间(例如,减少外部while循环的条件) - 但为此我们需要更多上下文(在循环之前发生的事情,$int,...)