2010-11-19 53 views
1

API調用的結果類型示例如下。我想按價格排序這些結果並保留數組的結構。我已經嘗試了很多來自手冊的例子,還有我找到的代碼,但似乎無法獲得正確的組合以使其正常工作。我真的很感激任何幫助。哪個PHP排序用於多維數組和價值'價格'?

array(7) { 
    ["errors"]=> array(0) { } 
    ["warnings"]=> array(1) { 
    [0]=> array(2) { 
     ["code"]=> string(26) "api_class_update_available" 
     ["msg"]=> string(58) "The Api class is now available in version 1.6" 
    } 
    } 
    ["data"]=> array(4) { 
    [0]=> array(3) { 
     ["url"]=> string(7) "http://" 
     ["keyword"]=> string(7) "keyword1" 
     ["price"]=> string(5) "23.99" 
    } 
    [1]=> array(3) { 
     ["url"]=> string(7) "http://" 
     ["keyword"]=> string(7) "keyword2" 
     ["price"]=> string(5) "19.99" 
    } 
    [2]=> array(3) { 
     ["url"]=> string(7) "http://" 
     ["keyword"]=> string(7) "keyword3" 
     ["price"]=> string(5) "29.99" 
    } 
    [3]=> array(3) { 
     ["url"]=> string(7) "http://" 
     ["keyword"]=> string(7) "keyword4" 
     ["price"]=> string(5) "9.99" 
    } 
    } 
    ["countryCode"] => string(2) "US" 
    ["page"] => int(1) 
    ["limit"]=> int(4) 
} 
+0

你的方法是什麼? – 2010-11-19 21:49:01

回答

3

您可以使用usort()$array['data']屬性進行排序

function priceCompare($a, $b) { return $a['price'] - $b['price']; } 
usort($results['data'], 'priceCompare'); 

或者PHP 5.3中,你可以使用閉包,所以你並不需要定義一個函數:

usort($results['data'], function($a, $b) { return $a['price'] - $b['price']; }); 
+0

很優雅! +1 – Patrick 2010-11-19 23:20:06

+0

輝煌!謝謝你一噸! PHP 5.2.14安裝完畢,所以第一個例子完美無缺! – gBarrett 2010-11-20 05:55:52