这些都不起作用......(没有任何分类)
我在PHP文档网站上的一个例子中修改了这些。
class ProductHelper {
function sortProductsByPrice($products, $sort = SORT_ASC) {
foreach ($products as $key => $row) {
$name[$key] = $row['name'];
$rrp[$key] = $row['rrp'];
}
array_multisort($rrp, $sort, $name, SORT_ASC, $products);
}
function sortProductsByName($products, $sort = SORT_ASC) {
foreach ($products as $key => $row) {
$name[$key] = $row['name'];
}
array_multisort($name, $sort, $products);
}
}
这就是我使用它的方式:
$products = $cur_prod_cat["products"]; // copy an array of products
$PRODUCT_HELPER->sortProductsByName($products); //sort it
如果您需要查看,products数组看起来像这样:
Array (
[0] => Array (
[id] => 0
[name] => product name
[description] => product description
[price] => product price
[etc] => other attributes
)
[1] => Array (
[id] => 1
[name] => product name
[description] => product description
[price] => product price
[etc] => other attributes
)
)
答案 0 :(得分:1)
在您致电return $rrp
后,您需要在{1}}中return $name
和第二个array_multisort
。
这是因为该函数正在对变量$rrp
和$name
进行排序,而不是您最初传递给函数的变量。
编辑:如果您只是尝试按$products
数组name
排序function sort_name($a,$b) {
return strcmp($a['name'],$b['name']);
}
$products = $cur_prod_cat["products"];
usort($products,'sort_name');
,则更好的方法如下:
sort_name
这使用函数sort_{value}
来确定数组中首先放置哪个元素。
如果需要,您可以创建更多{{1}}个函数,只需更改它包含的字段值。