2013-05-18 77 views
1

我最近開始在000webhost上託管一個不支持PHP 5.3的網站,並在該文件的第一個usort函數中不斷收到意外的T_FUNCTION錯誤。需要幫助轉換匿名usort功能

<?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()來幫助轉換它,但不能爲我的生活找出如何做到這一點。你們能幫忙嗎?

回答

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']); 
} 
+0

燁說沒有的伎倆。謝謝你,你是一個救生員 – Birdhowse

+0

'create_function'適用於PHP5.2,但它的內存效率很低,所以你應該像創建這樣的答案。 – mpyw

+0

謝謝我會牢記這一點 – Birdhowse