需要帮助转换匿名的usort函数

时间:2013-05-18 00:53:08

标签: php

我最近开始在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()来帮助转换它但是在我的生活中无法弄清楚如何去做。你们能帮忙吗?

1 个答案:

答案 0 :(得分: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']);
}