Вопрос очень нубский, но никак не могу его решить. Подскажите, есть формула следующего вида: PHP: function my_map_data( $data ) { $map = array( 'Мальчики' => 'Для мальчиков', 'Мальчишки' => 'Для мальчиков', 'Молодые парнишки' => 'Для мальчиков' ); return ( array_key_exists( $data, $map ) ) ? $map[ $data ] : $data; } Как упростить эту запись? То есть если значение равно любому из предложенных вариантов, то перевести на указанное значение. Пробовал 2 варианта: 1) Код (Text): 'Мальчики', 'Мальчишки', 'Молодые парнишки' => 'Для мальчиков', 2) Код (Text): 'Мальчики, Мальчишки, Молодые парнишки' => 'Для мальчиков', Но это не работает.
PHP: function my_map_data( $data ) { $map = ["Мальчики", "Мальчишки", "Молодые парнишки"]; return in_array ($data, $map) ? "Для мальчиков" : $data; }
Это сработало! Спасибо, ты очень помог! А если немного усложнить задачу и нужно дописать про девочек, то как в итоге получится? P.S. Я попробовал так, но ничего не вышло: PHP: function my_map_data( $data ) { $map = ["Мальчики", "Мальчишки", "Молодые парнишки"]; return in_array ($data, $map) ? "Для мальчиков" : $data; $map = ["Девочки", "Девчонки", "Красивые девчули"]; return in_array ($data, $map) ? "Для девочек" : $data; }
А можно понаглеть и попросить показать наглядно? Совсем не разбираюсь в коде, точнее только начинаю изучать.
PHP: function my_map_data( $data ) { $map = ["Мальчики", "Мальчишки", "Молодые парнишки", "Девочки", "Девчонки", "Красивые девчули" ]; return array_search ($data, $map) === false ? $data : (array_search ($data, $map) <= 2 ? "Для мальчиков" : "Для девочек") ; } Можно так
А вот в этой формуле я уже вообще ничего не понимаю))) Скопировать вставить кончено я смогу, но ели понадобится добавить еще какие-то значения, то темный лес. Сам не смогу ничего написать. Ладно, спасибо тебе огромное за помощь! Итак много помог!
Я могу объяснить: 1. Если не находим $data в массиве, возвращаем $data 2. Если находим, то тут ещё развилка: 1. Если ключ, связанный с найденным значением, меньше или равен 2, то, соответственно, возвращаем 'для мальчиков' 2. Т. к. значение найдено в массиве, а 'для мальчиков' не подходит, то подходит 'для девочек' Посмотри, какие ключи связаны со значениями в массиве с помощью: PHP: $map = ["Мальчики", "Мальчишки", "Молодые парнишки", "Девочки", "Девчонки", "Красивые девчули" ]; print_r ($map);
Пробую написать код под твоим чутким руководством)) Есть значения, которые надо интерпретировать: Мальчик, Мальчики, Мальчуганы - Для мальчиков Девочка, Девчуля - Для девочек Тетенька - Для женщин PHP: function my_map_data( $data ) { $map = ["Мальчик", "Мальчики", "Мальчуганы", "Девочка", "Девчуля", "Тетенька" ]; return array_search ($data, $map) === false ? $data : (array_search ($data, $map) <= 2 ? "Для мальчиков" ) ; ? $data : (array_search ($data, $map) 3 <=> 4 ? "Для девочек" ) ; ? $data : (array_search ($data, $map) >= 5 ? "Для женщин" ) ; } Примерно так?))) И неужели это самый простой способ перечисления?)
PHP: function my_map_data ($data) { $map = [ "Для мальчиков" => ["Мальчик", "Мальчики", "Мальчуганы"], "Для девочек" => ["Девочка", "Девчуля"], "Для женщин" => ["Тетенька"] ]; foreach ($map as $result => $group) { foreach ($group as $str) { if ($data == $str) { return $result; } } } return $data; } Если количество групп большое, лучше сделать так