the*_*cat 9 php variables pass-by-reference
看看这段代码:
$last = end($p = explode('/', $someString));
Run Code Online (Sandbox Code Playgroud)
得到这个通知:
只应通过引用传递变量
我真的很困惑,因为它$p是一个变量.
Tch*_*upi 12
end()期望变量,而不是参考.在你的例子$p = explode('/', $someString)中不是一个变量,它是一个赋值.正如文件所说:
此数组通过引用传递,因为它由函数修改.这意味着你必须传递一个实变量而不是一个返回数组的函数,因为只有实际变量可以通过引用传递.
你应该这样做:
$p = explode('/', $someString);
$last = end($p);
Run Code Online (Sandbox Code Playgroud)
Dan*_*jel 11
函数end()需要一个实数变量,而不是一个返回数组的函数,但是如果你把函数return放在双括号中,PHP就不会报告严格的标准通知:
$last = end( ( explode( '/', $someString ) ) );
Run Code Online (Sandbox Code Playgroud)
问题是你正在为一个函数做赋值,而传递给$ last的值实际上是函数的结果,而不是$ p.并且,explode返回对变量的引用.
分为两行:
$p = explode('/', $someString);
$last = end($p);
Run Code Online (Sandbox Code Playgroud)
除非你以后使用$ p,否则没有理由在end()的函数调用中分配$ p.为了风格清晰,无论如何我建议分两步完成.