コールバック関数でスコープ外の変数を使う
- PHP
- 
                         2022-06-13 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,867 views 
                                                                    
                    
                








 Fedoraインストール時にごちゃごちゃになったHDの整理の... (25/02/14)
 Fedoraインストール時にごちゃごちゃになったHDの整理の... (25/02/14)