<?php
function createCounter($counter = 1)
{
$counter -= 1;
return function() use (&$counter)
{
$counter++;
return $counter;
};
}
$c1 = createCounter(2); // создаем первый счетчик
//считаем с начиная с 2
echo $c1() . "\n"; // выводит 2
echo $c1() . "\n"; // выводит 3
echo $c1() . "\n"; // выводит 4
//считаем начиная с 20
$c2 = createCounter(20); // создаем вторую независимую функцию-счетчик
echo $c2() . "\n"; // выводит 20
echo $c2() . "\n"; // выводит 21
IDw/cGhwCmZ1bmN0aW9uIGNyZWF0ZUNvdW50ZXIoJGNvdW50ZXIgPSAxKQp7CiAgICAkY291bnRlciAtPSAxOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgdXNlICgmJGNvdW50ZXIpCiAgICB7CiAgICAgICAgJGNvdW50ZXIrKzsKICAgICAgICByZXR1cm4gJGNvdW50ZXI7CiAgICB9OwogICAgCn0KCiRjMSA9IGNyZWF0ZUNvdW50ZXIoMik7IC8vINGB0L7Qt9C00LDQtdC8INC/0LXRgNCy0YvQuSDRgdGH0LXRgtGH0LjQugovL9GB0YfQuNGC0LDQtdC8INGBINC90LDRh9C40L3QsNGPINGBIDIKZWNobyAkYzEoKSAuICJcbiI7IC8vINCy0YvQstC+0LTQuNGCIDIKZWNobyAkYzEoKSAuICJcbiI7IC8vINCy0YvQstC+0LTQuNGCIDMKZWNobyAkYzEoKSAuICJcbiI7IC8vINCy0YvQstC+0LTQuNGCIDQKLy/RgdGH0LjRgtCw0LXQvCDQvdCw0YfQuNC90LDRjyDRgSAyMAokYzIgPSBjcmVhdGVDb3VudGVyKDIwKTsgLy8g0YHQvtC30LTQsNC10Lwg0LLRgtC+0YDRg9GOINC90LXQt9Cw0LLQuNGB0LjQvNGD0Y4g0YTRg9C90LrRhtC40Y4t0YHRh9C10YLRh9C40LoKZWNobyAkYzIoKSAuICJcbiI7IC8vINCy0YvQstC+0LTQuNGCIDIwCmVjaG8gJGMyKCkgLiAiXG4iOyAvLyDQstGL0LLQvtC00LjRgiAyMQ==