カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

コールバック関数でスコープ外の変数を使う

この記事は最終更新日から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,511 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です