在接下来的一周里,我陷入了一个非常缓慢的1-bar EDGE互联网连接,所以如果我没有花足够的时间研究这个,请原谅我,但我只是设置了一个本地服务器来测试我的代码通常会通过互联网进行测试,而且在本地LAMP安装中似乎没有相同的工作方式.
问题是,当我这样做时:
echo strtolower($_REQUEST['page']);
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
files
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时:
$page['name'] = strtolower($_REQUEST['page']);
echo $page['name'];
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
f
Run Code Online (Sandbox Code Playgroud)
不,这不是一个错字,它始终只返回字符串的第一个字母.做一个var_dump($page)会导致string(5) "files",但做一个var_dump($page['name'])将导致string(1) "f".我正在使用PHP 5.2.1.
这里发生了什么?
谢谢!
阿里
你几乎回答了自己的问题. $page是"文件"(如您的第一个所示var_dump).这可能是由于已弃用register_globals或其手动近似造成的.鉴于,
$page['files']
Run Code Online (Sandbox Code Playgroud)
是"f".这是因为非数字字符串被隐式转换为0(!).您可以使用以下方法轻松复制:
$page = 'files';
echo $page['files'];
Run Code Online (Sandbox Code Playgroud)