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

错误:<?php$str="milu.jsp";$filetype=end(explode(".",$str)); echo $filetype;?>正确:<?php$str="milu.jsp";$filetype=explode(".",$str); echo end($filetype);?> 期待传说中的高手现身解释

慕村9548890
浏览 149回答 2
2回答

慕娘9325324

不知道你的php是什么版本?我在php5.2.14下运行,没有错误提示要注意的就是end函数的用法:mixed end ( array &array )end的参数是一个引用,你可以参考手册end函数下面的一个用户的说明:ken at expitrans dot com28-Oct-2005 12:02Please 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:<?phpecho ">> ".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版本好像都可以了.

慕标5832272

这两个结果都是对的。<?php$str="milu.jsp";$filetype=end(explode(".",$str)); echo $filetype;?> 分号回车:<?php$str="milu.jsp";$filetype=end(explode(".",$str));echo $filetype;?>都是对的,为什么要问这个问题
打开App,查看更多内容
随时随地看视频慕课网APP