Z pewnością używając array_map
i jeśli korzystasz z implementacji konteneraArrayAccess
do wyprowadzania obiektów jest po prostu mądrzejszym, semantycznym sposobem rozwiązania tego problemu?
Semantyka mapy tablicowej jest podobna w większości języków i implementacji, które widziałem. Jest przeznaczony do zwracania zmodyfikowanej tablicy na podstawie elementu tablicy wejściowej (wysoki poziom ignorowania preferencji typu kompilacja / środowisko wykonawcze języka); pętla ma na celu wykonanie większej logiki.
Do pobierania obiektów według identyfikatora / PK, w zależności od tego, czy używasz SQL, czy nie (wydaje się to sugerowane), użyłbym filtra, aby upewnić się, że otrzymam tablicę prawidłowych PK, a następnie implodowałbym przecinkiem i umieścił w IN()
klauzuli SQL , aby zwraca zestaw wyników. Wykonuje jedno wywołanie zamiast kilku za pośrednictwem SQL, optymalizując część call->wait
cyklu. Co najważniejsze, mój kod dobrze czyta się komuś z dowolnego języka z pewnym stopniem kompetencji i nie mamy problemów ze zmiennością.
<?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);
Jeśli wiesz, co robisz, nigdy nie będziesz mieć problemów ze zmiennością (pamiętaj, że jeśli zamierzasz nadpisać, $arr
możesz zawsze $arr = array_map
i wyraźnie powiedzieć.