php – 在数组中使用变量

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 在数组中使用变量脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我借用了漂亮的 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.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 在数组中使用变量全部内容,希望文章能够帮你解决php – 在数组中使用变量所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。