MySQL:用if语句选择奇数行

时间:2017-03-21 23:45:23

标签: php jquery mysql mysqli

我的网站上有一个简短的MySQL查询:

...

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

有没有办法通过if语句获取查询中的每个奇数行(每隔一行!)?

e.g。

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

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

1 个答案:

答案 0 :(得分: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;
}