donglangtun1850 2017-03-21 23:45
浏览 292

MySQL:用if语句选择奇数行

I've a short MySQL-Query on my website:

...

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

Is there a way to get every odd-row (every second row!) inside the query by an if-statement?

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条回答 默认 最新

  • doudang1052 2017-03-22 00:05
    关注

    Assuming an odd number is a digit that cannot return a whole number when it is divided by 2 you can try something like this:

    /**
     * 
     * @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() will return true if all characters in a string are numeric. If it is an odd number the result will contain a decimal point and therefore return false.

    As per @DrKey comment, he is right, a cleaner isEven function would look like

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

报告相同问题?

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本