使用基于excel函数的php数组进行数学运算

时间:2015-08-18 16:12:43

标签: php arrays excel

我是PHP和stackoverflow的新手,并且在询问之前尝试自己解决问题,但是我在使用PHP从数据库中提取数组时遇到一些麻烦。

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

的数字数组

我在excel中创建了一个函数,它可以完成数学运算并在excel中运行良好但是我无法找到在PHP中实现它的方法。 excel函数是=QUOTIENT(E32,65536)&QUOTIENT(E32-F34*65536,256)&(G33-G35*256)

E32是我开始使用的值,即$ sn

F34是第一个商的答案

G35是第二个商的答案

G33E32-F34*65536

我想拿个号码,例如3675177除以65536但没有余数为56,然后将56乘以65536,等于3670016,然后找到3670016和3675177之间的差值,即5161.然后将5161除以256,没有余数,即20,然后乘以20乘以256并减去5161,即41。

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

3 个答案:

答案 0 :(得分:1)

输出的计算和格式化如下:

$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";

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

答案 1 :(得分:0)

您可以使用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;

也许我使用了太多变量,这对你来说更容易理解。也许我做错了一些操作,也检查一下。但这是php中数学运算的想法。也许你应该将它放在带有参数的php function内,这样如果你多次使用你的代码就会变得更清晰。

编辑:您应该将此代码放在一个函数中,然后在运行此函数的数组中运行foreach循环,将参数作为数组位置的值。

答案 2 :(得分:0)

$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);