Массивы подстановка значений если ключ равен

Wolf56732

Новичок
Пример,у меня есть два массива в одном хранятся ключ число и значение ссылка пример:
$imgid = [
'653' => 'http/1',
'655' => 'http/2',
];
а второй массив
с данными пример
$arResult = [
'ITEMS' => [
'Прибор 1' =>
[
'img' => '654',
'title' => 'img2',
],
'Прибор 2' =>
[
'img' => '655',
'title' => 'img1',
],
],
];
в который есть ключ img который хранит id ссылки на картинку( к примеру ) этот id равен ключу в массиве выше*( $imgid )

вот вопрос в том какие есть варианты и какой самый простой и правильный, что бы просто пройти по массиву, $arResult и если в $arResult есть id который есть в $imgid для этого элемента подставить вместо id ссылку уже
у меня есть два варианта, но опять же хочу узнать есть ли более проще и правильнее

1.png

https://wtools.io/php-sandbox/bFpb тот же код который на скрине в песочнице
 

WMix

герр M:)ller
Партнер клуба
если эти 2 массива пришли из базы, то легче всего объединить их на уровне запроса (JOIN).
 

Wolf56732

Новичок
если эти 2 массива пришли из базы, то легче всего объединить их на уровне запроса (JOIN).
ну может, но я интересуюсь не для решение конкретной задачи,а просто узнать как можно реализовать то что я описал, просто для себя
а так вообще появилась такая потребность когда я делал свой компонент в битриксе, и там доставал картинки, у меня при выборке все элементов из бд приходит вместо SRC пути картинки его id и потом уже дополнительно нужно было доставать пути этих картинок уже по имеющимся id, в итоге получалось два массива, и я написал это так

if (!empty($arResult['PREVIEW_PICTURE_ID'])) {
$dbfiles = CFile::GetList(false, ["@ID" => $arResult['PREVIEW_PICTURE_ID']]);

while ($image = $dbfiles->GetNext()) {
$imges[$image['ID']]['SRC'] = CFile::GetFileSRC($image);
}
foreach ($arResult['ITEMS'] as $key => &$item) {
if (in_array($item['PREVIEW_PICTURE'], array_keys($imges))) {
$item["PREVIEW_PICTURE"] = $imges[$item['PREVIEW_PICTURE']];
}
}
}

но мне сказали что это можно сделать проще намного "распихать картинки по местам" ну а потом я снова столкнулся с чем то подобным спустя время и вот мне стало интересно как это проще через isset вот выше я уже написал как я подумал, но мне кажется что это тоже не самый простой пример
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
если уж пошел этой логикой, ок, принимается, чуть медленней, смотреть нужно на данные
 
Сверху