Безперечно, array_map
і якщо використовувати контейнер, що реалізує ArrayAccess
для отримання об'єктів, це просто розумніший, семантичний спосіб зробити це?
Семантика карт масиву схожа на більшості мов та реалізацій, які я бачив. Він призначений для повернення модифікованого масиву на основі елемента вхідного масиву (високий рівень ігнорування налаштування типу компіляції / типу виконання програми); цикл покликаний виконувати більше логіки.
Для отримання об'єктів за допомогою ID / PK, залежно від того, використовуєте ви SQL чи ні (здається, що пропонується), я б застосував фільтр, щоб переконатися, що я отримав масив дійсних ПК, а потім імплодую з комою та розміщую в IN()
пункті SQL для повернути набір результатів. Здійснює один виклик замість кількох через SQL, оптимізуючи трохи 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
бути чіткими та чіткими.