2014-07-08 94 views
0

我想通過比較XML對象中的一個字段的數值來在我的頁面上排序AJAX調用的結果。基本上,這是一個產品流行度排名,數字越高,越受歡迎。使用PHP usort + strcmp對XML結果進行排序? (整數)

我幾乎有它的工作,除了strcmp只比較第一個數字,所以目前順序是這樣的:1,12,15,19,2,21,24,3,34,36,39,5 ,52,56

如何修改此代碼,以便數字按從低到高的順序排列,而不管數字有多少?

$products = array(); 
foreach($xml->Products as $product) { 
    $products[] = $product; 
}; 

// Sort results based on popularity 
usort ($products, function($a, $b) { 
    return strcmp($a->ProductPopularity, $b->ProductPopularity); 
}); 

謝謝!

回答

0

作爲整數進行投射並進行正常比較。

usort($myArray, function($a, $b) { 
     if((int)$a->ProductPopularity==(int)$b->ProductPopularity) return 0; 
     return (int)$a->ProductPopularity < (int)$b->ProductPopularity?1:-1; 
}); 
+0

工作完美,謝謝! – user13286

0

試試這個:

usort ($products, function($a, $b) { 
    return (int)($a->ProductPopularity) - (int)($b->ProductPopularity)); 
}); 

或者你可以交換a和b,如果你想顛倒排序。

0
$arr2 = array(); 
foreach ($arr as $i => $row) { 
    $arr2[$row['fieldname']] = $row; 
} 
ksort($arr2); 
$arr2 = array_values($arr2);