Skip to content

Instantly share code, notes, and snippets.

@Alexander-Pop
Last active August 4, 2022 10:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Alexander-Pop/dd5d4abf82289d71d49763b1c3610a11 to your computer and use it in GitHub Desktop.
Save Alexander-Pop/dd5d4abf82289d71d49763b1c3610a11 to your computer and use it in GitHub Desktop.
PHP - Generate Fibonacci Series #loop #foreach
<?php
//version 1
function generateFibonacciSeries($input) {
$range = range(0,$input);
$output = [];
foreach($range as $number) {
if($number == 0 || $number == 1) {
array_push($output, $number);
} elseif (array_key_exists($number+1, $range)) {
$fbchiNumber = $output[$number-1] + $output[$number-2];
array_push($output, $fbchiNumber);
}
}
//[0,1,1,2,3,5,8,13,21....]
return $output;
}
//version 2
function generateFibonacciSeries($input) {
$range = range(0,$input-1);
$output = [0,1];
foreach($range as $key) {
if($key == 0 || $key == 1) {
continue;
} else {
$fbchiNumber = $output[$key-1] + $output[$key-2];
array_push($output, $fbchiNumber);
}
}
//[0,1,1,2,3,5,8,13,21....]
return $output;
}
//version 3
function generateFibonacciSeries($input) {
$range = range(1,$input);
$output = [0,1];
$ignore = [0,1,count($range)];
foreach($range as $key) {
if(!in_array($key, $ignore)) {
array_push(
$output,
$output[$key-1] + $output[$key-2]
);
}
}
//[0,1,1,2,3,5,8,13,21....]
return $output;
}
//Call it
echo "<pre>";
print_r(generateFibonacciSeries(9));
echo "</pre>";
<?php
$fiboData = [];
$number = (int)'9';
/**
* generate Fibonacci series
*
* @param int $number
* @param int $prev
* @param int $cur
* @param array $fiboData
* @return void
*/
function generateFibonacci($number, &$fiboData, $prev = 0, $cur = 1) {
//transform to positive
if ($number < 0) $number = -$number;
if ($prev == 0) {
$fiboData[] = $prev;
}
$fiboData[] = $cur;
$data = $prev + $cur;
if ($number <= 2) return;
generateFibonacci($number-1, $fiboData, $cur, $data);
}
generateFibonacci($number, $fiboData);
echo '<pre>';
print_r($fiboData);
echo '</pre>';
//////////////////////////
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment