Php 如果一个数字是从不同数字开始的3的倍数

Php 如果一个数字是从不同数字开始的3的倍数,php,math,Php,Math,我不确定我所追求的是什么数学术语,但我正在寻找一种在PHP中将变量分配给三的倍数的整数的方法。倍数将从数字1、2和3开始。所有整数将属于三个变量之一$varA,$varB和$varC。我认为应该使用模运算符,但我不确定如何使用 $varA可以包括数字1、4、7、10、13、16、19等。 $varB可以包括数字2、5、8、11、14、17、20等。 $varC可以包括数字3、6、9、12、15、18、21等 我想从if语句中分配数字,例如: if( $number == (test for $v

我不确定我所追求的是什么数学术语,但我正在寻找一种在PHP中将变量分配给三的倍数的整数的方法。倍数将从数字1、2和3开始。所有整数将属于三个变量之一
$varA
$varB
$varC
。我认为应该使用模运算符,但我不确定如何使用

$varA
可以包括数字1、4、7、10、13、16、19等。
$varB
可以包括数字2、5、8、11、14、17、20等。
$varC
可以包括数字3、6、9、12、15、18、21等

我想从if语句中分配数字,例如:

if( $number == (test for $varA) ) {
    $number = $varA
} else if( $number == (test for $varB) ) {
    $number = $varB
} else {
    $number = $varC
}
是的,您需要模(不是模)运算符。当除以三(0、1或2)时,将得到余数

第一项测试是:

if ($number % 3 == 1)
您可能希望只计算一次并在switch语句中使用-正如下面的其他David评论所述,这稍微更有效一些:

switch ($number % 3) {
    case 1:
        $number = $varA;
        break;
    case 2:
        $number = $varB;
        break;
    case 0:
        $number = $varC;
        break;
}

基于
$number%3
的结果进行切换是否会更有效(如果只是为了避免对该情况进行多次评估的话)?是的,它会略微有效。这不是对这个问题的直接回答,但值得一提。我会在中编辑。我建议使用bcmod($number,3)。请注意,如果任何oerand超过100000左右,%运算符可能会失败-这是一个已知的错误。是的,如这里所述:谢谢,正是我想要的