为了账号安全,请及时绑定邮箱和手机立即绑定

如下内容,关于php的end函数问题,该怎么解决?

如下内容,关于php的end函数问题,该怎么解决?

PHP C
慕村9548890 2022-04-15 11:11:53
错误:<?php$str="milu.jsp";$filetype=end(explode(".",$str)); echo $filetype;?>正确:<?php$str="milu.jsp";$filetype=explode(".",$str); echo end($filetype);?> 期待传说中的高手现身解释
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

不知道你的php是什么版本?
我在php5.2.14下运行,没有错误提示
要注意的就是end函数的用法:mixed end ( array &array )
end的参数是一个引用,你可以参考手册end函数下面的一个用户的说明:
ken at expitrans dot com
28-Oct-2005 12:02
Please note that from version 5.0.4 ==> 5.0.5 that this function now takes an array. This will possibly break some code for instance:

<?php

echo ">> ".end(array_keys(array('x' => 'y')))."\n";

?>

which will return "Fatal error: Only variables can be passed by reference" in version <= 5.0.4 but not in 5.0.5.

If you run into this problem with nested function calls, then an easy workaround is to assign the result from array_keys (or whatever function) to an intermediary variable:

<?php

$x = array_keys(array('x' => 'y'));
echo ">> ".end($x)."\n";

?>
如果你的php版本是早期的,那么php可以自动把$filetype视为引用,传递给end函数.所以第二种写法是正确的.第一种就可能会提示:只有变量可以作为引用传递,而函数的返回值不可以动态的作为引用传递.
现在的php版本好像都可以了.



查看完整回答
反对 回复 2022-04-19
?
慕标5832272

TA贡献1966条经验 获得超4个赞

这两个结果都是对的。
<?php$str="milu.jsp";$filetype=end(explode(".",$str)); echo $filetype;?> 分号回车:
<?php
$str="milu.jsp";
$filetype=end(explode(".",$str));
echo $filetype;
?>

都是对的,为什么要问这个问题



查看完整回答
反对 回复 2022-04-19
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信