1

我最近开始在 000webhost 上托管一个不支持 PHP 5.3 的网站,并且在此文件的第一个 usort 函数处不断收到意外的 T_FUNCTION 错误。

<?php
    $cityXML = simplexml_load_file("http://build.uitdatabank.be/lib/1.2/city.xml");
    $regionXML = simplexml_load_file("http://build.uitdatabank.be/lib/1.2/region.xml");
    $headingXML = simplexml_load_file("http://build.uitdatabank.be/lib/1.2/heading.xml");
    $cities = array();
    foreach($cityXML->city as $city)
    {
        $cities[]=$city;
    }
    usort($cities, function($a, $b)
    {
        return strcmp($a['city'], $b['city']);
    });
    $regions = array();
    foreach($regionXML->region as $region)
    {
        $regions[]=$region;
    }
    usort($regions, function($a, $b)
    {
        return strcmp($a['title'], $b['title']);
    });
    $headings = array();
    foreach($headingXML->heading as $heading)
    {
        $headings[]=$heading;
    }
    usort($headings, function($a, $b)
    {
        return strcmp($a['title'], $b['title']);
    });
?>

我相信这与这是一个匿名函数有关,因此不能在旧版本的 PHP 上运行。

我已经研究过使用 create_function() 来帮助转换它,但我一生都无法弄清楚如何去做。你们能帮忙吗?

4

1 回答 1

3

只需创建一个函数并使用函数的名称而不是原始函数:

usort($headings, function($a, $b)
{
    return strcmp($a['title'], $b['title']);
});

例如,将变为:

usort($headings, "sort_by_title");

function sort_by_title($a, $b)
{
    return strcmp($a['title'], $b['title']);
}
于 2013-05-18T00:59:43.320 回答