COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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


BuslikDrev

Recommended Posts

Всем привет, кто знает, как можно сравнить данные из двух массивов 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;

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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