Синтаксис 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 не будет опубликован. Обязательные поля помечены *