我试图通过比较XML对象中某个字段的数值来在我的页面上排序AJAX调用的结果。基本上,它是产品受欢迎程度排名,其中数字越高,越受欢迎。
我几乎让它工作,除了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 :(得分:0)
按整数投射并进行正常比较。
usort($myArray, function($a, $b) {
if((int)$a->ProductPopularity==(int)$b->ProductPopularity) return 0;
return (int)$a->ProductPopularity < (int)$b->ProductPopularity?1:-1;
});
答案 1 :(得分:0)
试试这个:
usort ($products, function($a, $b) {
return (int)($a->ProductPopularity) - (int)($b->ProductPopularity));
});
或者如果你想反转排序,你可以交换a和b。
答案 2 :(得分:0)
$arr2 = array();
foreach ($arr as $i => $row) {
$arr2[$row['fieldname']] = $row;
}
ksort($arr2);
$arr2 = array_values($arr2);