我有以下代码:
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"
如何摆脱它?
答案 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的文档。