2013-12-23 22 views
0

我试图运行PHP的usort函数来排序文件的数组创建时间。这里是代码:usort与WAMP很好地工作,给远程服务器上的语法错误。

$files = array(); 

$files = glob('./posts/*.txt'); 
usort($files, function($a, $b) { 
     return filemtime($a) < filemtime($b); //lambda sort 
}); 

usort当然引用一个数组并应用用户定义的回调函数对这些元素进行排序。

当我在我的WAMP的服务器上运行,这和重定向到本地主机它完美的作品,但是当我试图把文件上传到我的远程服务器(HostGator的),它给了以下错误:

Parse error: syntax error, unexpected T_FUNCTION in /home1/joshua1/public_html/blog.php 

我的两个WAMP服务器和我的HostGator远程服务器正在运行PHP 5的一个版本。 我对PHP很陌生,有人可以指出我的方向是正确的吗? (我假设它是一个配置不匹配,但我不积极)

+1

['usort()'](http://php.net/usort)docs指定它必须是['callable']类型(http://www.php.net) /manual/en/language.types.callable.php)。 Callbacks docs提到将函数名称作为字符串传递。它还提到了PHP 5.2.3的改变,这与您的问题似乎无关,但意味着即使在PHP5的次要版本之间,'usort()'也可能存在其他差异。你可以尝试单独定义你的回调函数,并用一个名字,然后将一个所谓的函数名字符串作为第二个参数传递给'usort()'。我可能会离开这里,不是一个PHP专家,但它是值得拍摄恕我直言。 – ajp15243

+0

是的,我在文档中看到了。我不知道为什么它会有所作为,但我会给它一个镜头。 –

+0

是的工作,显然匿名功能不支持在我的服务器上安装的PHP版本..感谢您的帮助! –

回答

1

事实证明,我的服务器上安装的PHP版本不支持匿名函数。此作品:

$files = array(); 

function filesort($a, $b) { 
    return filemtime($a) < filemtime($b); 
} 

$files = glob('./posts/*.txt'); 
usort($files, "filesort"); 
+2

当然,鼓励您将答案标记为已接受,因为它解决了您的问题。 – ajp15243

+0

两天计算;) –

相关问题