Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两两函数差分计算_Php_Wordpress_Function - Fatal编程技术网

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)数组的输出应该是什么(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您不接受的代码有问题吗?