Сравнение и вывод массивов


BuslikDrev
 Поделиться

Рекомендуемые сообщения

Всем привет, кто знает, как можно сравнить данные из двух массивов foreach и в одном из них вывести значение из второго?

Например, делаю вывод пути изображения из таблицы модуля, но хочу заменить изображение из другой таблицы (производителей), если значение в таблице модуля = 0.
Вот и не знаю как связать это дело.

Сделал так, оно выводит изображение из двух таблиц, но копирует каждое значение в раз 10 (столько производителей):

 

Скрытый текст

 

        $data['main_manufacturers'] = array();

        if (isset($this->request->post['main_manufacturers'])) {
            $results = $this->request->post['main_manufacturers'];
        } elseif (!empty($module_info['main_manufacturers'])) {
            $results = $module_info['main_manufacturers'];
        } else {
            $results = array();
        }
        
            foreach ($results as $result) {
                $results2 = $this->model_catalog_manufacturer->getManufacturers(0);
                foreach ($results2 as $result2) {

                    if (is_file(DIR_IMAGE . $result['image'])) {
                        $image = $result['image'];
                        $thumb = $result['image'];
                    } elseif (array_diff((array)$result2['manufacturer_id'], (array)$result['manufacturer_id'])) {
                        $image = $result2['image'];
                        $thumb = $result2['image'];

                    } else {
                        $image = '';
                        $thumb = 'no_image.png';
                    }

                    $data['main_manufacturers'][] = array(
                        'manufacturer_id' => $result['manufacturer_id'],
                        'image'           => $image,
                        'thumb'           => $this->model_tool_image->resize($thumb, 100, 100)
                    );
                }
            unset($result);
            }

 

 

Ссылка на комментарий
Поделиться на других сайтах

Меня осенило! Вопрос решил по другому:

Скрытый текст

        $data['main_manufacturers'] = array();

        if (isset($this->request->post['main_manufacturers'])) {
            $results = $this->request->post['main_manufacturers'];
        } elseif (!empty($module_info['main_manufacturers'])) {
            $results = $module_info['main_manufacturers'];
        } else {
            $results = array();
        }
        
        foreach ($results as $result) {
            $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($result['manufacturer_id']);

            if ($manufacturer_info['image'] && is_file(DIR_IMAGE . $result['image']) || is_file(DIR_IMAGE . $result['image'])) {
                $image = $result['image'];
                $thumb = $result['image'];
            } elseif ($manufacturer_info['image'] && !is_file(DIR_IMAGE . $result['image'])) {
                $image = $manufacturer_info['image'];
                $thumb = $manufacturer_info['image'];

            } else {
                $image = '';
                $thumb = 'no_image.png';
            }
                
            $data['main_manufacturers'][] = array(
                'manufacturer_id' => $result['manufacturer_id'],
                'image'           => $image,
                'thumb'           => $this->model_tool_image->resize($thumb, 100, 100)
            );

            unset($result);        
        }



Если не установлено своё фото, загружает из категории, если и там нету, то грузит стандартное.

Но есть вопрос, правильно-ли, что unset($result); добавил?

Ссылка на комментарий
Поделиться на других сайтах

Я как понял, unset() удаляет  переменную. Мол мой скрипт работу закончил, uset удалил переменную, чтобы это не делал уборщик php тем самым не засоряем память сервера, то есть засоряем на меньшее время.
Ещё есть вариант $a = NULL; или $a>f = NULL;

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу