DEV Community

Memoization in PHP

Honeybadger Staff on March 01, 2024

This article was originally written by Michael Barasa on the Honeybadger Developer Blog. Memoization is an important optimization technique in sof...
Collapse
 
lito profile image
Lito • Edited

You don't have to use an external variable for cache, you can use a static variable from the method:

function fibonacci(int $n): int
{
    static $cache = [];

    if (isset($cache[$n])) {
        return $cache[$n];
    }

    if (($n === 0) || ($n === 1)) {
        return $cache[$n] = $n;
    }

    return $cache[$n] = intval(fibonacci($n - 1) + fibonacci($n - 2));
}

for ($i = 0; $i < 80; $i++) {
    echo fibonacci($i).' ';
}
Enter fullscreen mode Exit fullscreen mode