前提・実現したいこと
foreach の前後で変数名を変えずに済む方法を探しています。
発生している問題
以下で$users
にhoge()
を通してからいろいろとやりたいのですが、その場合にforeach
を通すとどうしても$users2
のような異なる変数名を作らなければならないのか、と困っています。
該当のソースコード
php
1$users = [ 2 ['id'=>1,'name'=>'taro'], 3 ['id'=>2,'name'=>'hanako'], 4]; 5 6function hoge($type, $user){ 7 if($type==='a'){ 8 $user['name'] = 'changed'; 9 }elseif($type==='b'){ 10 $user['age'] = 10; 11 } 12 return $user; 13} 14 15$users2 = []; 16foreach( $users as $user){ 17 $users2[] = hoge('b', $user); 18} 19 20var_dump($users2);
試したこと
検索で見つけたarray_map
ですが、hoge($type, $user)
のように2つの引数があるために使えないように思えます。
php
1$users = array_map( 'hoge', $users ); // $type が渡せない 2 3var_dump($users);
また&
を付けて破壊的に、と思ったのですがこれもうまくいきませんでした。
php
1foreach( $users as &$user){ 2 $users[] = hoge('b', $user); 3} 4 5var_dump($users);
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/26 08:08