我已经检查了一堆关于stackoverflow和谷歌文章的帖子,但没有一个能够回答我的问题。这是我的代码(我简化了它而不是发布我的代码)
$first = 10;
$second = 0; //comes from db row count
$total = !is_int($first/$second) ? 0 : $first/$second;
问题是,当我这样做时,我一直得到零除错误。我有一堆,$ second不总是0,它可以是任何数字。但它确实出现0,因为行计数为任何查询它出现为0.是否有一种安全的方法来检查$ first是否可以除以$ second而不给出错误?我在!is_int之前尝试过@并且只是打破了所有其他语句。
答案 0 :(得分:5)
试试这个:
$total = ($second == 0) ? 0 : $first / $second;
答案 1 :(得分:1)
你不能除以0它是未定义的。如果你想用0来处理除法,只需检查除数是否等于0.或者更安全的方法,如果它是一个正整数,则查看:
$first = 10;
$dbRowCount = dbFunction();
if ($dbRowCount > 0) {
$total = $first / $dbRowCount;
} else {
//Error handling
}
答案 2 :(得分:0)
三元结构可以接受多个条件。它会像任何其他if
条件一样工作,如果第一个条件失败,它将不会尝试第二个条件。
所以,只需添加它
$total = ($first!==0 && $second!==0 && !is_int($first/$second)) ? 0 : $first/$second;
答案 3 :(得分:0)
您可能想尝试检查$ Second变量是否为0。
类似的东西:
$First = 10;
$Second = $row['table_column'];
if ($Second == 0) {
echo "Oops this will be an error";
}
else
$First/$second = $me;