使用基于Excel函数的php数组做math

我是新来的PHP和stackoverflow,并试图找出自己的问题之前问,但我有一些麻烦做一些math我从一个数据库与PHP拉。

到目前为止,我有一个名为$ array ['sn']的数组

我已经在Excel中创build了一个函数,并在Excel中运行良好,但我无法find一种方法来在PHP中。 excelfunction是=QUOTIENT(E32,65536)&QUOTIENT(E32-F34*65536,256)&(G33-G35*256)

E32是我以$ sn开头的值

F34是第一个商的答案

G35是第二个商的答案

G33E32-F34*65536

我想取一个数字,例如3675177除以65536,但是没有余数是56,然后乘以565乘以65536,等于3670016,然后find3670016和3675177之间的差值,即5161.然后除以5161除以256,是20然后乘以20乘以256,并减去5161即41。

3675177的最终结果应该是562041.我想对$ array ['sn']中的每个数字进行计算,任何帮助将不胜感激。

输出的计算和格式将如下所示:

 $n = 3675177; $const = 65536; $const2 = 256; $a = intval($n / $const); // intval returns only the integer part of a number $x = $n % $const; // $n % $const means "the remainder of $n / $const" $b = intval($x / $const2); $c = $x % $const2; // Two options to handle values of $c < 10: // if ($c < 10) $c = "0$c"; // $c = str_pad($c, 2, "0", STR_PAD_LEFT); echo "$a$b$c"; 

我会build议使用array_map将计算应用于您的数组值。

有可以使用PHP的算术运算。

我会做这样的事情:

 $initialNumber = //the initial number, wherever you get it from $entireDivision = ceil($initialNumber/65536)-1; $remainder = $initialNumber%65536; $remainderMultiplied = $remainder * 56; $difference = $initialNumber - $remainderMultiplied; $differenceDivided = ceil($difference/256)-1; $differenceMultipliedAndSubstracted = ($differenceDivided * 256) - $difference; 

也许我使用了太多的variables,这对你来说会更容易理解。 也许我做了一些错误的操作,也检查出来。 但是这是在php中进行math运算的想法。 也许你应该把它放在一个带有参数的php函数中 ,这样如果你多次使用,你的代码就会变得更干净。

编辑:你应该把这个代码里面的函数,然后在你的数组运行这个函数作为参数的数组位置的值运行一个foreach循环。

 $results = array(); foreach ($array['sn'] as $key => $a) { $b = intval($a / 65536); $c = ($a - $b * 65536); $d = intval($c / 256); $e = $c - $d * 256; $results[$key] = $b . $d . $e; } var_dump($results);