接下来的一周,我的 EDGE 互联网连接非常缓慢,令人遗憾的是非常慢,如果我没有花足够的时间研究这个问题,请原谅我,但我只是设置了一个本地服务器进行测试我通常会在 Internet 上测试的代码,但它在我的本地 LAMP 安装上似乎没有以相同的方式工作。
问题是,当我这样做时:
echo strtolower($_REQUEST['page']);
结果是这样的:
files
但是,当我这样做时:
$page['name'] = strtolower($_REQUEST['page']);
echo $page['name'];
结果是这样的:
f
不,这不是拼写错误,它始终只返回字符串的第一个字母。执行 var_dump($page)
将导致 string(5) "files"
,但执行 var_dump($page['name'])
将产生 string(1) "f"
。我正在使用 PHP 5.2.1
。
这是怎么回事?
最佳答案
您几乎回答了您自己的问题。 $page
是"file"(如您的第一个 var_dump
所示)。这可能是由已弃用的 register_globals
或其手动近似引起的。鉴于此,
$page['files']
是“f”。这是因为非数字字符串被隐式转换为 0 (!)。您可以使用以下方法轻松重现:
$page = 'files';
echo $page['files'];
关于数组中的 PHP 字符串只返回第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605772/