2013-05-18 85 views
2

我不确定我以后的数学术语,但我正在寻找一种方式在PHP中将变量分配给一个整数三倍的倍数。倍数将从数字1,2和3开始。所有整数将归入三个变量$varA,$varB$varC之一。我认为应该使用模数运算符,但我不知道如何。如果一个数字是3的倍数从不同的数字开始

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

回答

11

是,您需要的模(未模量)运营商。这给了余数除以三 - 无论是0,1或2

第一个考验将是:

if ($number % 3 == 1) 

您可能希望只一次评估,并在switch语句中使用 - 作为其他大卫在下面评论道,这个效率稍高一些:

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

基于'$ number%3'结果的开关是否会更有效率(如果只是为了避免多次评估条件)? –

+1

是的,它会略微。不是直接回答这个问题,而是值得暗示。我会编辑。 –

+0

我建议使用bcmod($ number,3)。请注意,如果任何大于100,000的操作符都可能会失败 - 这是一个已知的错误。 –

相关问题