修正“只能通过引用传递变量”的PHP通知

修正“只能通过引用传递变量”的PHP通知,php,Php,我有以下代码: if ( strcmp($file, ".") && strcmp($file, "..") && !strcasecmp(end(explode(".", $file)), "mp3")) { 运行它会导致警告: "Strict Standards: Only variables should be passed by reference in /home/caioebru/public_html/projeto/opentape/co

我有以下代码:

if ( strcmp($file, ".") && strcmp($file, "..") 
   && !strcasecmp(end(explode(".", $file)), "mp3")) {
运行它会导致警告:

"Strict Standards: Only variables should be passed by reference in
/home/caioebru/public_html/projeto/opentape/code/opentape_common.php on line 283"
如何摆脱它?

问题在于end方法,doc:mixed end array和$array-正如您所看到的,它需要引用数组,并且必须有一个变量才能做到这一点。您必须将代码分隔为:

$expFile = explode(".", $file);
if ( strcmp($file, ".") && strcmp($file, "..") && !strcasecmp(end($expFile), "mp3") { ... here your code continues

您可以将这段神秘的代码重写为:

$splFile = new SplFileInfo($file);
if($splFile->isFile() && $splFile->getExtension() == 'mp3') {
   // ...
您将摆脱这些通知,您的代码将更具可读性


有关详细信息,请参阅文档。

需要更多代码。在线。。。是症状,而不是原因。在我修复此问题时,第二行中出现语法错误?我原以为它有效,但我的脚本停止工作。加载MP3时,它不会列出已加载的内容。。。简单地说,没有发生任何事情时,加载MP3。。。你知道我怎么用你发给我的脚本来解决这个问题吗?谢谢…当我看不到这段代码的上下文时,很难说。请将完整的函数/脚本源代码发布到或其他地方。