Php 两两函数差分计算
我有这个功能:Php 两两函数差分计算,php,wordpress,function,Php,Wordpress,Function,我有这个功能: function pairwiseDifference($arry) { $n = count($arry) - 1; // you can add the -1 here $diff = 0; $result = array(); for ($i = 0; $i < $n; $i++) { // absolute difference between // consecutive numbers
function pairwiseDifference($arry)
{
$n = count($arry) - 1; // you can add the -1 here
$diff = 0;
$result = array();
for ($i = 0; $i < $n; $i++)
{
// absolute difference between
// consecutive numbers
$diff = abs($arry[$i] - $arry[$i + 1]);
echo $diff." ";
array_push($result, $diff); // use array_push() to add new items to an array
}
return $result; // return the result array
}
$arry = array(20,10,10,50);
echo "<br> Percent of commisions are: ";
// this echos 10,0,40 and assigns whatever your function returns
// to the variable $diffArray
$diffArray = pairwiseDifference($arry);
函数成对差($arry)
{
$n=count($arry)-1;//您可以在这里添加-1
$diff=0;
$result=array();
对于($i=0;$i<$n;$i++)
{
//绝对差异
//连续数
$diff=abs($arry[$i]-$arry[$i+1]);
echo$diff.“”;
array_push($result,$diff);//使用array_push()向数组添加新项
}
return$result;//返回结果数组
}
$arry=数组(20,10,10,50);
echo“
佣金的百分比为:”;
//这将回显10,0,40,并分配函数返回的任何内容
//到变量$diffArray
$diffArray=成对差($arry);
问题是我不希望有这样的结果因为数组的第一个数目(20)是我的佣金
其他数字是我父母的佣金(10,10,50)。 所以基本上我需要这样输出:(0,0,30)
因为我接受20%的佣金,
第一位家长不拿任何东西,因为我的佣金少(10)
第二个家长不能什么都不拿,因为我的佣金少(10)
只有最后一位家长拿30英镑,因为这比我的佣金(50-20英镑)还要高。
提前感谢根据您的代码调整逻辑,只需进行3次修改
- 创建一个
变量,并将其赋值为$max
$arry[0]
- 如果当前最大值大于当前值,则按
进行差值,否则取差值0
- 使用
函数再次计算新的最大值max()
<?php
function pairwiseDifference($arry)
{
$n = count($arry) - 1; // you can add the -1 here
$diff = 0;
$result = array();
$max = $arry[0]; // new addition
for ($i = 1; $i <= $n; $i++) // new modification <= n instead of < n
{
// absolute difference between
// consecutive numbers
$diff = $max < $arry[$i] ? $arry[$i] - $max : 0; // new modification
$max = max($max, $arry[$i]); // new modification
echo $diff." ";
array_push($result, $diff); // use array_push() to add new items to an array
}
return $result; // return the result array
}
$arry = array(20,10,10,50);
echo "<br> Percent of commisions are: ";
// this echos 10,0,40 and assigns whatever your function returns
// to the variable $diffArray
$diffArray = pairwiseDifference($arry);
要根据您的代码调整逻辑,只需进行3次修改
- 创建一个
$max
变量,并将其赋值为$arry[0]
- 如果当前最大值大于当前值,则按
0
进行差值,否则取差值
- 使用
max()
函数再次计算新的最大值
片段:
<?php
function pairwiseDifference($arry)
{
$n = count($arry) - 1; // you can add the -1 here
$diff = 0;
$result = array();
$max = $arry[0]; // new addition
for ($i = 1; $i <= $n; $i++) // new modification <= n instead of < n
{
// absolute difference between
// consecutive numbers
$diff = $max < $arry[$i] ? $arry[$i] - $max : 0; // new modification
$max = max($max, $arry[$i]); // new modification
echo $diff." ";
array_push($result, $diff); // use array_push() to add new items to an array
}
return $result; // return the result array
}
$arry = array(20,10,10,50);
echo "<br> Percent of commisions are: ";
// this echos 10,0,40 and assigns whatever your function returns
// to the variable $diffArray
$diffArray = pairwiseDifference($arry);
由于数组的第一个元素是您的佣金,其他元素是家长的佣金,而且您似乎不想在结果数组中包含佣金,因此可以执行以下操作:
function pairwiseDifference($arry)
{
$n = count($arry);
$diff = 0;
$result = array();
$myComm = $arry[0]; // your commision
for ($i = 1; $i < $n; $i++)
{
$diff = 0; // set $diff to 0 as default
if($myComm < $arry[$i]) // if your commision < parent commision
$diff = $arry[$i] - $myComm;
echo $diff." ";
array_push($result, $diff);
}
return $result;
}
$arry = array(20,10,10,50);
echo "<br> Percent of commisions are: ";
$diffArray = pairwiseDifference($arry);
echo $diffArray[0]; // prints 0
echo $diffArray[1]; // prints 0
echo $diffArray[2]; // prinst 30
函数成对差($arry)
{
$n=计数($arry);
$diff=0;
$result=array();
$myComm=$arry[0];//您的佣金
对于($i=1;$i<$n;$i++)
{
$diff=0;//将$diff设置为默认值0
如果($mycmm<$arry[$i])//如果您的佣金<家长佣金
$diff=$arry[$i]-$mm;
echo$diff.“”;
数组推送($result,$diff);
}
返回$result;
}
$arry=数组(20,10,10,50);
echo“
佣金的百分比为:”;
$diffArray=成对差($arry);
echo$diffArray[0];//打印0
echo$diffArray[1];//打印0
echo$diffArray[2];//普林斯特30
由于数组的第一个元素是您的佣金,其他元素是家长的佣金,而且您似乎不想将佣金包含在结果数组中,因此可以执行以下操作:
function pairwiseDifference($arry)
{
$n = count($arry);
$diff = 0;
$result = array();
$myComm = $arry[0]; // your commision
for ($i = 1; $i < $n; $i++)
{
$diff = 0; // set $diff to 0 as default
if($myComm < $arry[$i]) // if your commision < parent commision
$diff = $arry[$i] - $myComm;
echo $diff." ";
array_push($result, $diff);
}
return $result;
}
$arry = array(20,10,10,50);
echo "<br> Percent of commisions are: ";
$diffArray = pairwiseDifference($arry);
echo $diffArray[0]; // prints 0
echo $diffArray[1]; // prints 0
echo $diffArray[2]; // prinst 30
函数成对差($arry)
{
$n=计数($arry);
$diff=0;
$result=array();
$myComm=$arry[0];//您的佣金
对于($i=1;$i<$n;$i++)
{
$diff=0;//将$diff设置为默认值0
如果($mycmm<$arry[$i])//如果您的佣金<家长佣金
$diff=$arry[$i]-$mm;
echo$diff.“”;
数组推送($result,$diff);
}
返回$result;
}
$arry=数组(20,10,10,50);
echo“
佣金的百分比为:”;
$diffArray=成对差($arry);
echo$diffArray[0];//打印0
echo$diffArray[1];//打印0
echo$diffArray[2];//普林斯特30
阵列的输出应该是什么(20,10,10,50100,25)代码>Hi @ NeeGeDeV认为第一个数字将是每次在这个情况下我的佣金(20),所以OutUpTy将是(0,0,30,50,0),你必须理解Higer-Niges是最大的佣金,但是取决于哪里。例如,如果我有数组(80,20,30,10,50),我的输出是0,0,0,0,因为我的佣金(80)比其他的高,所以不需要补偿。如果我有这个数组(10,40,10,50,40),输出将是30,0,10,0,因为我取10,其余的是总佣金,以达到最大佣金(50)(2010车型年款+30+10=50),所以取佣金时有一个运行最大值,明白。@nice_dev是的nice,在传销系统中称为阶梯分离计划数组的输出应该是什么(20,10,10,50100,25);?Hi @ NeeGeDeV认为第一个数字将是每次在这个情况下我的佣金(20),所以OutUPT将是(0,0,30,50,0),你必须理解Higer-Niges是最大的佣金,但是取决于哪里。例如,如果我的数组(80,20,30,10,50)我的输出是0,0,0,0,因为我的佣金(80)。如果我有这个数组(10,40,10,50,40),输出将是30,0,10,0,因为我取10,其余的是达到最大佣金(50)的总佣金(10my+30+10=50)所以在收取佣金时有一个最大值,明白了。@nice\u dev是的nice,在传销系统中被称为阶梯分离计划抱歉@Ivan86,但是你的代码otuput-10-0-40我不知道why@GINOGINI我丢失了一些$
符号。现在应该可以正常工作了。很抱歉@Ivan86,但是你的代码otuput-10-0-40我不知道why@GINOGIN我丢失了一些$
符号。现在应该可以正常工作了。@GINOGINI您不接受的代码有问题吗?@GINOGINI您不接受的代码有问题吗?