修复“只应通过引用传递变量”PHP通知

时间:2014-08-27 06:50:34

标签: 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/code/opentape_common.php on line 283"

如何摆脱它?

2 个答案:

答案 0 :(得分:0)

问题在于end()方法,doc:mixed end ( array &$array ) - 正如您所看到的,它需要引用数组,您必须有一个变量才能执行此操作。您必须将代码分隔为:

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

答案 1 :(得分:0)

您可以将此神秘代码重写为:

$splFile = new SplFileInfo($file);
if($splFile->isFile() && $splFile->getExtension() == 'mp3') {
   // ...

您将摆脱这些通知,您的代码将更具可读性。

请参阅SplFileInfo的文档。