コールバック関数でスコープ外の変数を使う
- PHP
-
2022-06-13
この記事は最終更新日から1年以上経過しています。
配列の各要素に対して処理を行いたいとき、コールバック関数を使います。
コードの例を見ていきましょう。
$data = [ 1, 2, 3 ];
$data = array_map(function($i) {
return $i * 2;
}, $data );
print_r($data);
出力結果
Array
(
[0] => 2
[1] => 4
[2] => 6
)
次に、各要素に掛ける数値を外部で変数として宣言します。
それだけだとコールバック関数の中で使用することは出来ませんのでuseを使います。
$data = [ 1, 2, 3 ];
$n = 2;
$data = array_map(function($i) use ($n) {
return $i * $n;
}, $data );
print_r($data);
同じ出力結果が得られます。
Array
(
[0] => 2
[1] => 4
[2] => 6
)
他に2次元の連想配列に対して任意のデータを一括で追加することも出来ます。
$users = [ // 元のデータ
[ 'name' => 'a' ],
[ 'name' => 'b' ]
];
$data = [ 'new' => 1 ]; // 追加するデータ
$new_users = array_map(function($user) use ($data) {
return array_merge($user, $data);
}, $users );
print_r($new_users);
出力結果
Array
(
[0] => Array
(
[name] => a
[new] => 1
)
[1] => Array
(
[name] => b
[new] => 1
)
)
この記事がお役に立ちましたらシェアお願いします
1,860 views




