2013-03-13 104 views
0

我想知道如何重複的功能,直到返回某個值的函數。我覺得像這樣的工作,但事實並非如此。PHP重複基於返回值

list($db_Total) = getData($db_queryResult); // a random number from a mysqli query result. 

function getData($db_Total){ 
if($db_Total){ 
    while($arr = mysqli_fetch_array){ 
     $db_Total = $arr['prize']; // set db_Total to database query amount 
    } 
} 
} 
if($db_Total>=300){ 
echo "is equal or higher than 300"; 

    while($db_Total >= 300){ // loop until you get a smaller result 
    list($db_Total) = getData($db_queryResult); 
    } 
}elseif($db_Total <= 300){ 
    echo "is lower than 300"; 
} 

我猜說,這是,我想只運行一個函數一次,如果該函數返回一個值高於我不想,我想再次運行該功能,直到它的simpliest方式確實......有可能嗎?

感謝您的任何幫助。

回答

0
while (($db_Total = getData($db_queryResult)) >= 300) { 
    echo "is equal or higher than 300"; 
} 
echo "is lower than 300"; 
0

這裏僅僅是少數在代碼中的錯誤的:

  • $arr = mysqli_fetch_array應該$arr = mysqli_fetch_array($db_queryResult)
  • 但是很多時候你叫mysqli_fetch_array也不會改變結果,因爲你已經已經運行的實際SQL一旦
  • 還是你的意思,只是看一個多行的一行導致每個getData函數被調用的時間 - 在這種情況下,你不希望while循環就是這樣的功能裏面,這將消耗從數據庫結果
  • getData功能不會返回任何東西(沒有return語句)的所有行
  • getData功能似乎被賦予DB結果集,但其稱爲$db_Total和除了檢查它不是false-y(if($db_Total)
  • list($foo) = bar()用於當bar()返回幾個單獨項目的數組時;不知道爲什麼你認爲你需要在這裏
  • elseif($db_Total <= 300){應該僅僅是else
  • 無限循環的提防 - 是你絕對保證最終獲得低於300多少?