Seguramente usar array_map
y si usar una implementación de contenedor ArrayAccess
para derivar objetos es solo una forma más inteligente y semántica de hacerlo.
La semántica del mapa de matriz es similar en la mayoría de los lenguajes e implementaciones que he visto. Está diseñado para devolver una matriz modificada basada en el elemento de matriz de entrada (alto nivel que ignora la preferencia de tipo de compilación / tiempo de ejecución del lenguaje); un bucle está destinado a realizar más lógica.
Para recuperar objetos por ID / PK, dependiendo de si está usando SQL o no (parece sugerido), usaría un filtro para asegurarme de obtener una matriz de PK válidos, luego implosionar con una coma y colocarlo en una IN()
cláusula SQL para devuelve el conjunto de resultados. Realiza una llamada en lugar de varias a través de SQL, optimizando un poco el call->wait
ciclo. Lo más importante es que mi código se leerá bien para alguien de cualquier idioma con un grado de competencia y no nos encontremos con problemas de mutabilidad.
<?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);
vs
<?php
$arr = [0,1,2,3,4];
foreach($arr as $i => $item) {
$arr[$i] = is_int($item) ? $item * 2 : $item;
}
var_dump($arr);
Si sabe lo que está haciendo, nunca tendrá problemas de mutabilidad (teniendo en cuenta que si tiene la intención de sobrescribir $arr
, siempre podría $arr = array_map
ser explícito.