LoginSignup
3
1

More than 5 years have passed since last update.

PHPでクロージャ内でのカウントアップ

Last updated at Posted at 2018-04-03

static変数を使用する

static変数の初期化が最初の一回だけ実行される仕組みを利用します。
当たり前かと思いますが、クロージャだとクロージャ内スコープのみで有効の様子

$test_list = range(10, 15);

$result_list = array_map(function ($value) {
    static $index = 0;
    var_dump($index);
    return $index++;
}, $test_list);

var_dump($index);
var_dump($result_list);
int(0)
int(1)
int(2)
int(3)
int(4)

Notice:  Undefined variable
Null

array(6) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(4)
  [5]=>
  int(5)
}

参照渡しでカウンターを渡す

$test_list = range(10, 15);

$index = 0;
$result_list = array_map(function ($value) use (&$index) {
    var_dump($index);
    return $index++;
}, $test_list);

var_dump($result_list);
int(0)
int(1)
int(2)
int(3)
int(4)
int(5)

array(6) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(4)
  [5]=>
  int(5)
}
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1