从pairwiseDifference 函数创建一个数组

问题描述

这是我的代码

$arry = (10,20,30,40,50)
function pairwiseDifference($arry,$n) 
{ 
    $diff = 0; 
    for ($i = 0; $i < $n - 1; $i++) 
    { 
        
        // absolute difference between 
        // consecutive numbers 
        $diff = abs($arry[$i] - $arry[$i + 1]); 
        echo $diff." "; 
    } 
} 
 
// Driver Code  
$n = sizeof($arry);
echo "<br> Percent of commisions are: "; pairwiseDifference($arry,$n);  // this echo 10,10,10

所以现在我想让成对函数的结果成为一个数组以在另一个代码中使用,我尝试放置:

$arru   = pairwiseDifference($arry,$n)[1]; 
$arru1  = pairwiseDifference($arry,$n)[2]; 
$arru2  = pairwiseDifference($arry,$n)[3]; 
$arru3  = pairwiseDifference($arry,$n)[4]; 
echo $arru;
echo $arru1;
echo $arru2;
echo $arru3;

但是不工作。
我怎么了?
提前致谢!

解决方法

PHP 中的数组声明需要使用 array 关键字,也可以只使用方括号 [] 声明:

$arry = array(10,20,30,40,50);

$arry = [10,50];

您可以使用 count() 方法获取数组的大小,而无需将其作为参数传递给您的函数:

function pairwiseDifference($arry) 
{ 
    $n = count($arry);
    // ...
}

您的函数不返回任何内容,因此变量 $arru$arru1、... 不会从函数中返回任何内容并保持 empty。为了返回一系列差异并解决您的问题,您可以这样做:

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(10,50);
echo "<br> Percent of commisions are: ";

// this echos 10,10,10 and assigns whatever your function returns 
// to the variable $diffArray
$diffArray = pairwiseDifference($arry);

$arru   = $diffArray[0];  // array elements start at index 0
$arru1  = $diffArray[1];
$arru2  = $diffArray[2];
$arru3  = $diffArray[3];

echo $arru;    // prints 10
echo $arru1;   // prints 10
echo $arru2;   // prints 10
echo $arru3;   // prints 10