Assign multiple keys to same value in array

后端 未结 3 1742
轮回少年
轮回少年 2021-02-03 09:59
 $lang = array(
        \'thank you\'=>\'You are welcome\',
        \'thanks\'=>\'You are welcome\',
        \'thank ya\'=>\'You are welcome\'
    );

相关标签:
3条回答
  • 2021-02-03 10:33

    I do it in three steps:

    1 - Define unique values

    2 - Fill repetitive value

    3 - Union 1. and 2.

    $lang = array(
        'hello'=>'hello', 
        'goodbye'=>'goodbye'
    );
    
    $keys = array('thank you','thanks','thank ya');
    $result = array_fill_keys($keys, 'You are welcome');
    
    $lang += $result;
    

    Have a look at array_fill_keys and Array Operators +=

    0 讨论(0)
  • 2021-02-03 10:43

    You can use array_fill_keys() :

    $keys = array('thank you','thanks','thank ya');
    $lang = array_fill_keys($keys, 'You are welcome');
    

    Example

    0 讨论(0)
  • 2021-02-03 10:58

    While I am reticent to offer up a code solution when you've admitted you are new to the language and just haven't researched it well, I'm going to hope that this project is you playing with the language to learn it as opposed to jumping in head first to give something to a client where it will ultimately not perform well.

    Edit: Just saw your "good thing I'm going to college for this" and am I glad I posted to help.

    Here's a structure which does what I believe you are seeking to do.

    <?php
    class StandardizeSayings {
      public static $CONVERSIONS = array(
        'You are welcome' => array(
          'thank you',
          'thanks',
          'thank ya'
          ),
        'Hello' => array('hello'),
        'Goodbye' => array('goodbye', 'good bye')
      );
    
      public static function getStandardization($word) {
        $word_lowercase = strtolower($word);
        foreach (StandardizeSayings::$CONVERSIONS as $conversion=>$equivalents) {
          if (array_search($word_lowercase, $equivalents) !== false) {
            return $conversion;
          }
        }
        return '';
      }
    }
    
    echo StandardizeSayings::getStandardization('thank ya');
    ?>
    

    It uses a class structure with static members/methods (so no instantiation of the class is needed). It is easy to extend with a pre-defined list of conversions (work is needed to add in additional conversions at runtime.) It should also run fairly fast.

    0 讨论(0)
提交回复
热议问题