Beta_0001
2014-08-10 22:19
$ext=strtolower(end(explode(".", $val)));
end();函数的php文档的介绍:The array. This array is passed by reference because it is modified by the function. This means you must pass it a real variable and not a function returning an array because only actual variables may be passed by reference.
我看的意思是不能通过函数返回数组,为什么这么写可以呢。
$ext=strtolower(end(explode(".", $val)));这段代码在index.php的325行。
求解!!谢谢!

你看到end这个函数是只能的参数是取变量的地址,不可以直接把值直接传进去,所以会报这个警告。当PHP5.3以后严格校验的时候就会报这个问题。只能传变量,不可以直接写值。
有老师能解释一下具体的原因吗,为什么必须通过一个变量引用才行呢,Java中这样写好像可以,php中所有的函数是不是都必须通过变量引用才行,还是个别的。
$arr=explode(".", $val);
$ext=strtolower(end($arr));
这样改就行了。
我测试一下,报错了,Strict Standards: Only variables should be passed by reference in。我自己的代码和下载的源码都出现同样的错误。
不知道你们的是否和我的一样。
WEB在线文件管理器
36257 学习 · 346 问题
相似问题