php – 在数组中使用变量
发布时间:2020-12-13 17:13:17 所属栏目:PHP教程 来源:网络整理
导读:我借用了漂亮的 Cokidoo DateTime类,将常规DateTime转换为“以前的格式”. 我正在开发多语言网站,并希望在一年前,几年前,一个月前用变量替换. 代码示例: protected $strings = array( 'y' = array('1 year ago','%d years ago'),'m' = array('1 month ago',
我借用了漂亮的
Cokidoo DateTime类,将常规DateTime转换为“以前的格式”.
我正在开发多语言网站,并希望在一年前,几年前,一个月前用变量替换. 代码示例: protected $strings = array( 'y' => array('1 year ago','%d years ago'),'m' => array('1 month ago','%d months ago'),'d' => array('1 day ago','%d days ago'),'h' => array('1 hour ago','%d hours ago'),'i' => array('1 minute ago','%d minutes ago'),'s' => array('now','%d secons ago'),); 这可以不使用替换方法吗? 显然这不起作用: ‘m’=> array(‘1′.$month_ago,’%d’.$months_ago), 有什么帮助吗? 解决方法
如果它没有扩展DateTime,那么该类会更有用.它唯一能做的就是格式化日期,它完全没有理由成为约会.它可以轻松地按需创建DateTime并使用它而不是$this.
如果你做了这个修改(并适当地将类重命名为例如DateTimeDiffFormatter),那么突然所有的可能性都是开放的:你可以将参数传递给确定要使用的语言的构造函数,或者甚至更好地传递一些对你的i18n组件的引用.然后例如你可以 // I have no idea why this was protected,and probably the class author did not as well private $strings = array( 'y' => array('years_ago_1','years_ago_n'),// etc etc ); 和 return sprintf($localizer->get_string($this->strings[$intervalKey][$pluralKey]),$value); 最后,假设您可以将本地化字符串的格式硬编码为“X分钟前”和类似内容,这是一个非常糟糕的主意.该数字需要是格式字符串的一部分,因为在许多文化中它不在“多久以前”部分之前. 更新 我改编了Ilia的候选解决方案,使其符合上述建议;结果是here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |