Разумеется, использование array_map
и если использование контейнера ArrayAccess
для получения объектов - это просто более разумный семантический способ сделать это?
Семантика карты массива аналогична для большинства языков и реализаций, которые я видел. Он предназначен для возврата измененного массива на основе элемента входного массива (высокий уровень игнорирует языковые предпочтения компиляции / времени выполнения); цикл предназначен для выполнения большей логики.
Для извлечения объектов по ID / PK, в зависимости от того, используете ли вы SQL или нет (это кажется предложенным), я бы использовал фильтр, чтобы убедиться, что я получаю массив действительных PK, затем запятую и поместите в предложение SQL IN()
, чтобы вернуть набор результатов. Он делает один вызов вместо нескольких через 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
и прямо.