2017-03-21 19 views
0

我已經在我的網站很短的MySQL查詢:MySQL的:選擇奇數行的if語句

... 

for($i=0;$i<$sql->getRows();$i++) { 
    $id = $sql->getValue("id"); 
    $name = $sql->getValue("name"); 
} 

有沒有辦法讓查詢中的每個奇數行(每隔一行!)通過if語句?

例如

for($i=0;$i<$sql->getRows();$i++) { 
    $id = $sql->getValue("id"); 
    $name = $sql->getValue("name"); 

    if(ROW = ODD) { 
     // DO SOMETING 
    } else { 
     // DO SOMETING ELSE 
    } 
} 
+0

你如何定義ODD行? – RiggsFolly

+1

可能重複[php測試如果數字是奇數或偶數](http://stackoverflow.com/questions/7959247/php-test-if-number-is-odd-or-even) – imtheman

+0

表中的每第二行。 – JonasLoerken

回答

0

假設奇數是當它除以2,你可以嘗試這樣的事情不能返回一個整數一個數字:

/** 
* 
* @param int $rowNumber 
* @return bool event number 
*/ 
function isEven($rowNumber){ 
    $r = $rowNumber/2; 
    return ctype_digit((string) $r); 
} 

for($i=0;$i<$sql->getRows();$i++){ 

    if(isEven($i)){ 
     //do even code access the rowdata with ro 
    } 
    else{ 
     //do odd code 
    }  
} 

ctype_digit()將返回true,如果字符串中的所有字符是數字。如果它是一個奇數,結果將包含一個小數點,因此返回false。

按@DrKey評論,他是對的,清潔ISEVEN函數看起來像

/** 
* 
* @param int $rowNumber 
* @return bool event number 
*/ 
function isEven($rowNumber){ 
    return $rowNumber % 2 == 0; 
} 
+2

您正在每行增加'$ i'兩次,'isEven'函數可以簡單地返回$ rowNumber%2 == 0'。 – DrKey

+0

啊,是啊我的壞我原來在foreach循環中,所以手動做增量。當我將它改回for循環時,我忘了刪除那個增量 –

0

使用 「模」 - 的$一個由$ b除的餘數。

答案由喬納森·萊因哈特http://php.net/manual/en/language.operators.arithmetic.php#70424

一個很簡單但也許並不明顯使用模(%)運算符是檢查是否一個整數是奇數還是偶數。

if (($a % 2) == 1) 
{ echo "$a is odd." ;} 
if (($a % 2) == 0) 
{ echo "$a is even." ;} 

這是很好的,當你想在表或交替顏色的行。

for ($i = 1; $i <= 10; $i++) { 
if(($i % 2) == 1) //odd 
    {echo "<div class=\"dark\">$i</div>";} 
else //even 
    {echo "<div class=\"light\">$i</div>";} 
}