0

我想对多维数组进行排序。只需一把钥匙,完全没有问题。

$value1 = array();
foreach ($dataArray as $key => $row)
{
    $value1[$key] = $row['value_a'];
}
array_multisort($value1, SORT_ASC, $dataArray);

现在我想用两个值对上面的数组进行排序,value_a并且value_b权重为value_a1.5 倍。value_a 是一个距离,例如 300 英尺,value_b 是一个价格,例如 450。只是为了给你一些背景信息......

array_multisort能够根据两个值对数组进行排序,但不会对它们进行不同的加权。

任何帮助将不胜感激:)

非常感谢您的努力!

4

1 回答 1

1

我会使用usort,它需要一个回调,因此您可以定义任何您喜欢的比较行为。

在您的情况下,类似于:

usort($value1, function($a, $b) {
    return $a['value_a'] * 1.5 + $a['value_b'] - $b['value_a'] * 1.5 - $b['value_b'];
});

http://www.php.net/manual/en/function.usort.php

更新:上面的手册页上有一个注释,回调的结果将四舍五入为整数,因此您可能需要在回调中考虑自己的四舍五入(例如,如果金额是美元,您可以将所有内容乘以 100 到得到一个整数值)

于 2013-04-30T08:29:20.537 回答