【问题标题】:MySQL: Select odd row by if-statementMySQL:通过 if 语句选择奇数行
【发布时间】:2017-08-13 21:28:28
【问题描述】:

我的网站上有一个简短的 MySQL-Query:

...

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
    }
}

【问题讨论】:

  • 你是如何定义奇数行的?
  • 表格中每隔一行。
  • 您的代码似乎没有多大意义。我假设一个名为 getRows() 的方法会从查询中获取所有结果集,但您没有处理结果数组

标签: php jquery mysql mysqli


【解决方案1】:

假设奇数是一个数字,当它被 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;
}

【讨论】:

  • 您每行将$i 增加两次,isEven 函数可以简单地为return $rowNumber % 2 == 0
  • 啊,是的,我的错误是我最初将它放在 foreach 循环中,所以手动进行增量。当我把它改回 for 循环时,我忘了删除那个增量
猜你喜欢
  • 1970-01-01
  • 2018-08-27
  • 2021-04-04
  • 2012-10-23
  • 2020-07-21
  • 2013-07-05
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多