0
這些都沒有工作......(沒有排序)爲什麼這個php array_multisort沒有按預期工作?
我改編了這些來自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
在你需要看的情況下,產品陣列看起來是這樣的:
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
)
)
但是,這隻會返回一列?另外,不要把$ products數組放在array_multisort函數中對$ products數組進行排序? – Ozzy
如果你看看php.net函數的定義:'bool array_multisort(array&$ arr [,mixed $ arg = SORT_ASC [,mixed $ arg = SORT_REGULAR [,mixed $ ...]]])' - 這是第一個被引用並因此排序的變量,而不是其他值。 – Death
好的。我也剛剛意識到最後一個參數被添加到通過公共密鑰進行排序。但是,如果我想對這些列進行排序,那麼返回一個完整的產品數組,這意味着我必須複製每一列,對它們進行排序,然後將它們粘在一起? – Ozzy