Задать вопрос
san_jorich
@san_jorich
Творческий кодер

Как сравнить массивы и подменить значения правильно?

Здравствуйте, помогите разобраться, пожалуйста!
Ситуация:
1. Есть массив $services = array('estate_service-fridge','estate_service-internet','estate_service-tv','estate_service-washing_machine','estate_sevice-phone');
2. Есть массив из массивов $estate_parameters array(estate_address_house: array([0]=>11),estate_address_max_level: array([0]=>9) итд..
Задача:
Перебирая второй массив, если ключ есть в первом массиве и значение по ключу второго массива равно true
swith case_ом добавить к строке $estate_services соответствующее значение
Код, который не хочет:
$estate_services=''; // Заводим строку
$services = array('estate_service-fridge','estate_service-internet','estate_service-tv','estate_service-washing_machine','estate_sevice-phone'); // Массив сравнения ключей второго массива
foreach ($estate_parameters as $key ) { // Для каждого элемента в массиве $estate_parameters
          foreach ($estate_parameters[$key] as $value => $val) { // <- подозреваю что ошибка тут, но..
            if(in_array($key, $services) && $val!="false"){ //если ключ совпал, и значение не false то
              switch ($key) { //подбираем значение и плюсуем переменную  $service
                case 'estate_service-fridge': $service = 'Холодильник'; $estate_services .= $service.' '; break;
                case 'estate_service-internet': $service = 'Интернет'; $estate_services .= $service.' '; break;
                case 'estate_service-tv': $service='Телевизор'; $estate_services .= $service.' '; break;
                case 'estate_service-washing_machine': $service='Стиральная машина'; $estate_services .= $service.' '; break;
                case 'estate_sevice-phone': $service='Телефон'; $estate_services .= $service.' '; break;               
              }
            }
          }        
        }
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Arik
foreach ($estate_parameters as $key )
если
$estate_parameters = array(estate_address_house: array([0]=>11),estate_address_max_level: array([0]=>9)


то в $key массивы, а не ключи, вам нужно или
foreach (array_keys($estate_parameters) as $key )
или
foreach ($estate_parameters as $key => $val)

для удобства можно хотя бы юзать $key1 => $val1, $key2 => $val2 - чтоб ясно было с какого уровня переменные
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы