我想对多维数组排序。只有一把钥匙,根本不成问题。
$value1 = array();
foreach ($dataArray as $key => $row)
{
$value1[$key] = $row['value_a'];
}
array_multisort($value1, SORT_ASC, $dataArray);
现在我想对上面的数组进行排序,其中包含两个值value_a
和value_b
,权重value_a
为1.5次。Value_a是距离,例如300英尺;value_b是价格,例如450英尺。只是给你一些背景……
array_multisort
能够根据两个值对数组进行排序,但不会对它们进行不同的加权。
任何帮助都将是非常感激的:)
非常感谢您的努力!
我会使用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以获得整数值)