php version_compare()在本地主机上失败,在服务器上运行

php version_compare()在本地主机上失败,在服务器上运行,php,compare,version,Php,Compare,Version,此条件代码执行if语句出自php手册: // version_compare ( string $version1 , string $version2 [, string $operator ] ) // http://php.net/manual/en/function.version-compare.php if (version_compare(PHP_VERSION, '5.3.0') >= 0) { //echo 'I am at least PHP version 5

此条件代码执行if语句出自php手册:

// version_compare ( string $version1 , string $version2 [, string $operator ] )
// http://php.net/manual/en/function.version-compare.php
if (version_compare(PHP_VERSION, '5.3.0') >= 0)
{
    //echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
    include_once( DOMAIN_PATH . "sitewide/functions/make_comparer.php" );
    usort($market_and_volume, make_comparer(['exchange_volume', SORT_DESC], ['exchange', SORT_DESC]));   
}
上述代码在生产服务器上运行时不会出错。在localhost php版本5.2.9-2上,从理论上讲,该版本会使version_compare()函数失败,它会抛出一个错误:

解析错误:解析错误,第61行test.php中应为“')”

通常我可能不在乎,因为它是在5.4.39生产服务器上运行的,但是我计划在几乎每个localhost页面上使用这个片段,因为它会阻碍未来的开发


有什么想法吗?

问题是您正在使用速记数组表示法<代码>[…]。不幸的是,只有PHP5.4.0及更高版本才支持这一点。即使“坏”代码从未运行过,它也无法编译,因此会抛出一个错误

这可以通过像这样使用
数组(…)
符号来解决

// version_compare ( string $version1 , string $version2 [, string $operator ] )
// http://php.net/manual/en/function.version-compare.php
if (version_compare(PHP_VERSION, '5.3.0') >= 0)
{
    //echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
    include_once( DOMAIN_PATH . "sitewide/functions/make_comparer.php" );
    usort($market_and_volume, make_comparer(array('exchange_volume', SORT_DESC), array('exchange', SORT_DESC)));   
}

参考资料:

第61行是什么?您能确认它是if语句吗?它是您的短数组语法,它在LocalHostMarshallLofsound&Dagon上不受支持。它是正确的。使用备用数组表示法没有错误。谢谢你们两位。