Синтаксис PHP

Илья_2712

Вопрос очень нубский, но никак не могу его решить.

Подскажите, есть формула следующего вида:

PHP:
  1. function my_map_data( $data ) {
  2.     $map = array(
  3.         ‘Мальчики’ => ‘Для мальчиков’,
  4.         ‘Мальчишки’ => ‘Для мальчиков’,
  5.         ‘Молодые парнишки’ => ‘Для мальчиков’
  6.     );
  7.     return ( array_key_exists( $data, $map ) ) ? $map[ $data ] : $data;
  8. }

Как упростить эту запись? То есть если значение равно любому из предложенных вариантов, то перевести на указанное значение.

Пробовал 2 варианта:
1)

Код (Text):
  1. ‘Мальчики’, ‘Мальчишки’, ‘Молодые парнишки’ => ‘Для мальчиков’,

2)

Код (Text):
  1. ‘Мальчики, Мальчишки, Молодые парнишки’ => ‘Для мальчиков’,

Но это не работает.

 

roboformation

PHP:
  1. function my_map_data( $data ) {
  2.     $map = [«Мальчики», «Мальчишки», «Молодые парнишки»];
  3.     return in_array ($data, $map) ? «Для мальчиков» : $data;
  4. }
 

Илья_2712

Это сработало! Спасибо, ты очень помог!
А если немного усложнить задачу и нужно дописать про девочек, то как в итоге получится?

P.S. Я попробовал так, но ничего не вышло:

PHP:
  1. function my_map_data( $data ) {
  2. $map = [«Мальчики», «Мальчишки», «Молодые парнишки»];
  3. return in_array ($data, $map) ? «Для мальчиков» : $data;
  4. $map = [«Девочки», «Девчонки», «Красивые девчули»];
  5. return in_array ($data, $map) ? «Для девочек» : $data;
  6. }
 

roboformation

На 3 строке убрать «: $data» + тогда перестроить условие. Также ты изменяешь массив $map

 

Илья_2712

А можно понаглеть и попросить показать наглядно?
Совсем не разбираюсь в коде, точнее только начинаю изучать.

 

roboformation

PHP:
  1. function my_map_data( $data ) {
  2. $map = [«Мальчики», «Мальчишки», «Молодые парнишки», «Девочки», «Девчонки», «Красивые девчули» ];
  3. return array_search ($data, $map) === false
  4. ? $data : (array_search ($data, $map) <= 2
  5. ? «Для мальчиков» : «Для девочек») ;
  6. }

Можно так

 

Илья_2712

А вот в этой формуле я уже вообще ничего не понимаю)))
Скопировать вставить кончено я смогу, но ели понадобится добавить еще какие-то значения, то темный лес. Сам не смогу ничего написать.
Ладно, спасибо тебе огромное за помощь! Итак много помог!

 

roboformation

Я могу объяснить:
1. Если не находим $data в массиве, возвращаем $data
2. Если находим, то тут ещё развилка:
1. Если ключ, связанный с найденным значением, меньше или равен 2, то, соответственно, возвращаем ‘для мальчиков’
2. Т. к. значение найдено в массиве, а ‘для мальчиков’ не подходит, то подходит ‘для девочек’

Посмотри, какие ключи связаны со значениями в массиве с помощью:

PHP:
  1. $map = [«Мальчики», «Мальчишки», «Молодые парнишки», «Девочки», «Девчонки», «Красивые девчули» ];
  2. print_r ($map);
 

Илья_2712

Пробую написать код под твоим чутким руководством))

Есть значения, которые надо интерпретировать:
Мальчик, Мальчики, Мальчуганы — Для мальчиков
Девочка, Девчуля — Для девочек
Тетенька — Для женщин

PHP:
  1. function my_map_data( $data ) {
  2. $map = [«Мальчик», «Мальчики», «Мальчуганы», «Девочка», «Девчуля», «Тетенька» ];
  3. return array_search ($data, $map) === false
  4. ? $data : (array_search ($data, $map) <= 2
  5. ? «Для мальчиков» ) ;
  6. ? $data : (array_search ($data, $map) 3 <=> 4
  7. ? «Для девочек» ) ;
  8. ? $data : (array_search ($data, $map) >= 5
  9. ? «Для женщин» ) ;
  10. }

Примерно так?)))
И неужели это самый простой способ перечисления?)

 

roboformation

PHP:
  1. function my_map_data ($data) {
  2.           $map = [
  3.                 «Для мальчиков» => [«Мальчик», «Мальчики», «Мальчуганы»],
  4.                  «Для девочек» => [«Девочка», «Девчуля»],
  5.                  «Для женщин» => [«Тетенька»]
  6.                ];
  7.            foreach ($map as $result => $group) {
  8.                foreach ($group as $str) {
  9.                    if ($data == $str) {
  10.                        return $result;
  11.                    }
  12.                }
  13.            }
  14.            return $data;
  15.       }

Если количество групп большое, лучше сделать так

 

Илья_2712

Вот это то, что надо.
Спасибо огромное! Огромнейшее!

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *