【发布时间】:2013-12-15 22:32:41
【问题描述】:
我正在寻找一种优雅的方式来对存储在一个数组中的三个值中的两个进行排序。第三个可以忽略,但我不想松开它(所以取消设置不是一种选择)。
想象一下这样的数组:
$r = Array("tree_type" => 1, "tree_height" = 5, "tree_age" = 2);
如果 tree_height 更大,那么它的年龄我想用 tree_age 交换树高,所以树高总是比年龄小。
现在我是这样排序的:
if ( $r['tree_height'] > $r['tree_age'] ) {
$tmp = $r['tree_height'];
$r['tree_height'] = $r['tree_age'];
$r['tree_age'] = $tmp;
}
它工作得很好,但我正在寻找更优雅的方式。最好的解决方案是这样的:
fname($r, $r['tree_height'], $r['tree_age']);
如果第二个参数比第三个大,fname 总是将第二个参数与第三个交换,否则什么也不做。
任何建议将不胜感激。 卡雷格。
回答:
无条件的最短答案是:
$tmp = Array($r['tree_height'], $r['tree_age'])
sort($tmp);
【问题讨论】: