$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'
);
因此,我需要将其添加到数组中,而不是用相同的值填充我的键值,而实际上它们并非完全相同。我应该在开头说明这一点
答案 0 :(得分:17)
您可以使用array_fill_keys()
:
$keys = array('thank you','thanks','thank ya');
$lang = array_fill_keys($keys, 'You are welcome');
答案 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;