[解決済み】キーを含むPHPのarray_map
2022-03-31 11:19:36
質問
このような方法はありますか?
$test_array = array("first_key" => "first_value",
"second_key" => "second_value");
var_dump(array_map(function($a, $b) { return "$a loves $b"; },
array_keys($test_array),
array_values($test_array)));
を呼び出すのではなく
array_keys
と
array_values
を直接渡します。
$test_array
という変数がありますか?
希望する出力は。
array(2) {
[0]=>
string(27) "first_key loves first_value"
[1]=>
string(29) "second_key loves second_value"
}
解決方法は?
array_mapはキーを扱えないのでダメです。
配列ウォーク が行います。
$test_array = array("first_key" => "first_value",
"second_key" => "second_value");
array_walk($test_array, function(&$a, $b) { $a = "$b loves $a"; });
var_dump($test_array);
// array(2) {
// ["first_key"]=>
// string(27) "first_key loves first_value"
// ["second_key"]=>
// string(29) "second_key loves second_value"
// }
しかし、これはパラメータとして与えられた配列を変更するので、正確には関数型プログラミングではありません(質問にはそのようなタグが付けられています)。また、コメントで指摘されているように、これは配列の値のみを変更するので、キーは質問で指定されたものにはなりません。
上記の点を修正する関数を自分で書こうと思えば、こんな風に書けるはずです。
function mymapper($arrayparam, $valuecallback) {
$resultarr = array();
foreach ($arrayparam as $key => $value) {
$resultarr[] = $valuecallback($key, $value);
}
return $resultarr;
}
$test_array = array("first_key" => "first_value",
"second_key" => "second_value");
$new_array = mymapper($test_array, function($a, $b) { return "$a loves $b"; });
var_dump($new_array);
// array(2) {
// [0]=>
// string(27) "first_key loves first_value"
// [1]=>
// string(29) "second_key loves second_value"
// }
関連
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み] リスト内包とラムダ+フィルタの比較
-
[解決済み] PHPでJSONをプリティープリントする
-
[解決済み] PHPで有用なエラーメッセージを得るにはどうしたらよいですか?
-
[解決済み] クエリ文字列の中で配列を渡すには?
-
[解決済み] PHPでは、配列要素のキーをどのように変更するのですか?
-
[解決済み】PHPで配列を別の配列に追加する(array_pushや+ではない)。
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] foreach、array_mapとlambda、array_mapとstatic関数の性能比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】空の配列要素を削除する
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
-
[解決済み] キュアリングと部分適用の違いは何ですか?