我似乎无法正常排序此功能。这是我的代码:
function cmpPriceDesc($a, $b) {
return strcmp($a->product_price, $b->product_price);
}
usort($this->products, "cmpPriceDesc");
返回以下内容:
Array
(
[0] => stdClass Object
(
[virtuemart_manufacturer_id] => 2
[mf_name] => Karl
...
[product_price]=> 127.445
)
[1] => stdClass Object
(
[virtuemart_manufacturer_id] => 7
[mf_name] => Karl
...
[product_price]=> 13.445
)
[2] => stdClass Object
(
[virtuemart_manufacturer_id] => 5
[mf_name] => Karl
...
[product_price]=> 13.445
)
[3] => stdClass Object
(
[virtuemart_manufacturer_id] => 11
[mf_name] => Karl
...
[product_price]=> 18.000
)
正如您所看到的,产品价格不会从高到低。关于为什么的任何想法?
答案 0 :(得分:1)
cmpPriceDesc()
应遵循usort的规范:
如果第一个参数被认为分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
它很简单:
function cmpPriceDesc($a, $b) {
return $b->product_price - $a->product_price;
}
我推断,如果函数名中的 Desc ,你首先需要更高的值。