PHP奇怪的洗牌与require_once和字符串数组

Posted

技术标签:

【中文标题】PHP奇怪的洗牌与require_once和字符串数组【英文标题】:PHP strange shuffle with require_once and array of strings 【发布时间】:2012-09-11 00:56:45 【问题描述】:

我遇到了一个关于 php 及其 require_once 语言结构的奇怪问题。

我需要名为 EN-en.php 的文件。它包含我网站的英文,我是这样写的:

....
$lang['header']['loginbox']['menu'][1] = "contacts" ;
$lang['header']['loginbox']['menu'][2] = "settings" ;
....

然后我使用此代码将我的文件包含在整个站点中

require_once $langFile ;

我觉得很容易,$langFile is = "/var/www/webstite/langs/EN-en.php"。但奇怪的部分来了。

当我使用时

echo $lang['header']['loginbox']['menu'][1]; 

它打印出类似“Gontacts”之类的东西...我不明白为什么,而且这不是唯一的情况。请有人可以帮我解决这个问题吗?

【问题讨论】:

我该如何解决呢?为什么它将“c”“转换”为“G”? 嗯,编码问题不会将 c 更改为 G。您说它打印“类似”的东西,所以我假设您是一般的。 确保两个文件的编码方式相同 不,抱歉,我的意思是 G 是的,他们是@artragis,我已经检查过两次了 【参考方案1】:

您可能正在覆盖数组中自己的值。

看这个简单的例子:

$test = "some text";
$test['menu'] = 'extra';
var_dump($test);
// produces: string(9) "eome text"
// the first character - $test[0] - gets overwritten

【讨论】:

您先生成就了我的一天。非常感谢你,上帝保佑你! @Claudio Ludovico Panetta 不客气。如果对您有用,请不要忘记将答案标记为已接受。

以上是关于PHP奇怪的洗牌与require_once和字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP/HTML/CSS:IE 在使用 require_once() 时表现得很奇怪

Require_once 似乎不会影响所有功能?

PHP:require_once 用于多个文件但出现乱序

require与require_once有啥区别?PHP

PHP/xdebug profiler require_once 性能不佳

包含路径解析如何在 require_once 中工作?