前提・実現したいこと
下記の処理をarray_map
使って実現できますか?
array_map
でやらなくても良いのですが、foreach
やfor
やwhile
など使いたくないです。
処理
php
1$arr = []; 2$id = 100; 3foreach(['userA', 'userB'] as $user) { 4 $id++; 5 $arr[$id] = $user; 6} 7var_dump($arr); 8 9// array(2) { 10// [101]=> 11// string(5) "userA" 12// [102]=> 13// string(5) "userB" 14// }
やりたいけどできない。。。
php
1$id = 100; 2$arr = array_map(function ($user) use ($count) { 3 $id++; 4 return [$id => $user]; 5}, ['userA', 'userB']); 6var_dump($arr); 7 8// できない!!! 9// array(2) { 10// [0]=> 11// array(1) { 12// [101]=> 13// string(5) "userA" 14// } 15// [1]=> 16// array(1) { 17// [101]=> 18// string(5) "userB" 19// } 20// } 21
使いたくない背景を書いてください。
見えている要件を満たすだけなら、
$arr2[101] = 'userA';
$arr2[102] = 'userB';
でも良いかと。
https://www.php.net/manual/ja/function.array-reduce.php
array-reduce が使えそうです。initial には空の配列と 100 を組みにして入れるといいんじゃないでしょうか。
あえて処理を冗長にして読みづらくなってませんかね。メンテナンス性や可読性無視でしょうか。内容次第ではパフォーマンスにも多大に影響するのでは。
回答4件
あなたの回答
tips
プレビュー