Sûrement utiliser array_map
et si utiliser un conteneur implémenté ArrayAccess
pour dériver des objets est juste un moyen plus intelligent et sémantique de procéder?
La sémantique de la carte de tableau est similaire dans la plupart des langages et implémentations que j'ai vus. Il est conçu pour renvoyer un tableau modifié basé sur l'élément du tableau d'entrée (haut niveau ignorant la préférence de type de compilation / d'exécution du langage); une boucle est censée exécuter plus de logique.
Pour récupérer des objets par ID / PK, selon que vous utilisez SQL ou non (cela semble suggéré), j'utiliserais un filtre pour m'assurer d'obtenir un tableau de PK valides, puis imploser avec une virgule et placer dans une IN()
clause SQL pour renvoie l'ensemble de résultats. Il effectue un appel au lieu de plusieurs via SQL, optimisant un peu le call->wait
cycle. Plus important encore, mon code se lirait bien à quelqu'un de n'importe quelle langue avec un certain degré de compétence et nous ne rencontrons pas de problèmes de mutabilité.
<?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);
contre
<?php
$arr = [0,1,2,3,4];
foreach($arr as $i => $item) {
$arr[$i] = is_int($item) ? $item * 2 : $item;
}
var_dump($arr);
Si vous savez ce que vous faites, vous n'aurez jamais de problèmes de mutabilité (en gardant à l'esprit si vous avez l'intention d'écraser, $arr
vous pouvez toujours $arr = array_map
et être explicite.