Certamente, usar array_map
e se usar uma implementação de contêiner ArrayAccess
para derivar objetos é apenas uma maneira mais inteligente e semântica de fazer isso?
A semântica do mapa de matriz é semelhante na maioria das linguagens e implementações que vi. Ele é projetado para retornar uma matriz modificada com base no elemento da matriz de entrada (alto nível ignorando a preferência de tipo de compilação / tempo de execução da linguagem); um loop destina-se a realizar mais lógica.
Para recuperar objetos por ID / PK, dependendo se você está usando SQL ou não (parece sugerido), eu usaria um filtro para garantir que obtivesse uma matriz de PKs válidos, então implodiria com vírgula e colocaria em uma IN()
cláusula SQL para retorna o conjunto de resultados. Ele faz uma chamada em vez de várias via SQL, otimizando um pouco o call->wait
ciclo. Mais importante ainda, meu código seria lido bem para alguém de qualquer linguagem com um grau de competência e não enfrentamos problemas de mutabilidade.
<?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);
Se você sabe o que está fazendo, nunca terá problemas de mutabilidade (tendo em mente que se você pretende sobrescrever, $arr
você pode sempre $arr = array_map
e ser explícito.