我是PHP和stackoverflow的新手,并且在询问之前尝试自己解决问题,但是我在使用PHP从数据库中提取数组时遇到一些麻烦。
到目前为止,我有一个名为$ array ['sn']
的数字数组我在excel中创建了一个函数,它可以完成数学运算并在excel中运行良好但是我无法找到在PHP中实现它的方法。
excel函数是=QUOTIENT(E32,65536)"IENT(E32-F34*65536,256)&(G33-G35*256)
E32
是我开始使用的值,即$ sn
F34
是第一个商的答案
G35
是第二个商的答案
G33
为E32-F34*65536
我想拿个号码,例如3675177除以65536但没有余数为56,然后将56乘以65536,等于3670016,然后找到3670016和3675177之间的差值,即5161.然后将5161除以256,没有余数,即20,然后乘以20乘以256并减去5161,即41。
3675177的最终结果应为562041.我想对$ array ['sn']中的每个数字进行此计算,任何帮助都将不胜感激。
答案 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);