確かに使用array_map
して、ArrayAccess
オブジェクトを導出するために実装するコンテナを使用することは、これを行うためのよりスマートでセマンティックな方法ですか?
配列マップのセマンティクスは、私が見てきたほとんどの言語と実装で似ています。入力配列要素に基づいて変更された配列を返すように設計されています(高レベルは言語のコンパイル/実行時のタイプ設定を無視します)。ループは、より多くのロジックを実行するためのものです。
ID / PKでオブジェクトを取得する場合、SQLを使用しているかどうかに応じて(推奨されているようです)、フィルターを使用して有効なPKの配列を取得し、カンマで展開してSQL IN()
句に配置します。結果セットを返します。SQLを介して複数回ではなく1回の呼び出しを行い、call->wait
サイクルの少しを最適化します。最も重要なのは、私のコードは、ある程度の能力を備えた任意の言語の誰かによく読まれ、可変性の問題に遭遇しないことです。
<?php
$arr = [0,1,2,3,4];
$arr2 = array_map(function($value) { return is_int($value) ? $value*2 : $value; }, $arr);
var_dump($arr);
var_dump($arr2);
対
<?php
$arr = [0,1,2,3,4];
foreach($arr as $i => $item) {
$arr[$i] = is_int($item) ? $item * 2 : $item;
}
var_dump($arr);
何をしているのかがわかっていれば、可変性の問題は決して発生しません(上書き$arr
するつもりなら、いつ$arr = array_map
でも明示的にすることができます)。