2016-01-24 57 views
0

我目前自學網頁開發/編程和學習PHP我建立了一個簡單的程序。該程序根據用戶輸入並基於一系列數學算法計算7個隨機抽獎號碼。代碼工作正常,但我想改善它。代碼非常重複,我想通過創建自己的函數來簡化它。我創建了第一個接受用戶輸入的函數,只需執行一些數學運算並返回一些值。PHP函數檢查匹配的號碼

比如...

<?php 

    function some_maths($int1 $int2 $int3){ 

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

所以這是非常簡單的,但我想現在要做的就是拍X,Y,Z的值,並創建檢查,以確保功能,他們「重不匹配,或者說他們不小於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++; 
} 

這似乎很好地工作,但我不希望不得不一遍又一遍地重複相同的代碼。我相信必須有更好的方法?我可以把值放入一個數組,也許這樣做?什麼是最好的解決方案呢?

+0

從你的兩個答案到目前爲止我很想downvote你的問題,因爲它是我不清楚你真正期望從我們所提出的意見。所以請澄清和/或提出更具建設性的意見。 – morido

回答

0

你的問題是一種模糊的,但如果我不得不寫一個函數來檢查,如果三個數字是不相等並且是< 59> 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; 
} 
+0

很酷,但我正在檢查三個以上的數字!在總我有8個變量的每個變量基本上是一個勞託遊戲球,這樣他們可以不等於或> 59或<1。 – ShiggyDooDah

0

到目前爲止我只看到兩個(非常簡單)的東西:

  1. 您的函數原型在第一個示例中缺少參數之間的逗號。它應該是function some_maths($int1, $int2, $int3)而不是function some_maths($int1 $int2 $int3)

  2. 在你的第二個例子關閉}丟失。但是,如果我正確地解釋你的東西,外if -clause是多餘的。因此,代碼段可以被簡化爲:

第二個例子:

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,...)。

+0

它不是我的實際代碼其只是一個例子。我有更多的變量進入原型函數 – ShiggyDooDah