MySQL:通过 if 语句选择奇数行
Posted
技术标签:
【中文标题】MySQL:通过 if 语句选择奇数行【英文标题】:MySQL: Select odd row by if-statement 【发布时间】: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
【问题讨论】:
你是如何定义奇数行的? php test if number is odd or even的可能重复 表格中每隔一行。 您的代码似乎没有多大意义。我假设一个名为getRows()
的方法会从查询中获取所有结果集,但您没有处理结果数组
【参考方案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 循环时,我忘了删除那个增量以上是关于MySQL:通过 if 语句选择奇数行的主要内容,如果未能解决你的问题,请参考以下文章