将多个键分配给数组中的相同值

时间:2014-05-17 22:45:38

标签: php arrays key key-value

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

正如你所看到的那样,为了获得同样的价值,我可以做任何事情都会让人感到厌烦。

$lang['thanks']=>$lang['thank ya']=>$lang['thank you']

试图在这里花一些时间来重写一百次

PHP类函数:

function fetch_key($key, $l,$bool){
    $dynamic = new l18n;
     if($bool == true or is_null($bool)){
        return addslashes( $dynamic->convert($key,$l) );
     }else{
      return  $dynamic->convert($key,$l);
     }
  }

EX

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

因此,我需要将其添加到数组中,而不是用相同的值填充我的键值,而实际上它们并非完全相同。我应该在开头说明这一点

3 个答案:

答案 0 :(得分:17)

您可以使用array_fill_keys()

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

Example

答案 1 :(得分:3)

虽然当你承认自己是语言新手并且没有好好研究它时,我仍然保持提供代码解决方案,但我希望这个项目是你的玩这种语言来学习它,而不是先跳进去向客户提供最终表现不佳的东西。

编辑:刚刚看到你为了这个而上大学的好事"我很高兴我发帖帮忙。

这是一个我认为你正在寻求做的结构。

<?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');
?>

它使用具有静态成员/方法的类结构(因此不需要实例化类)。使用预定义的转换列表很容易扩展(需要在运行时添加额外的转换工作。)它也应该运行得相当快。

答案 2 :(得分:1)

我分三步完成:

1 - 定义唯一值

2 - 填写重复值

3 - Union 1.和2.

$lang = array(
    'hello'=>'hello', 
    'goodbye'=>'goodbye'
);

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

$lang += $result;

查看array_fill_keysArray Operators +=