PHP
has the function of trader_sma
for calculating the moving average. Since the concept is simple, I tried to write a function to do so. For this purpose, I kept the last n
elements in an array during a loop, as
function sma($array,$period){
foreach($array as $element){
$c[$element[0]]=$element[1];
if(count($c)>$period){
$garbage = array_shift($c);
$average = array_sum($c)/$period;
$result[]=array($element[0],$average);
}
}
return($result);
}
where the input and output arrays have the structure of array(array(['x'],['y']))
The function works perfectly, but when having large inputs, the PHP trader_sma
is 10 times faster than my function. Therefore, I came to the conclusion that my function is not the correct or at least the efficiency way.
Do you have any suggestion?