我的网站上有一个简短的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
}
}
答案 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;
}