在PHP中使用多个键对多维数组进行排序
我正在尝试用PHP对一些数据进行排序。下面是一个数组示例(第一列表示我仍希望与每行中各自的值关联的ID): 01.2.0在PHP中使用多个键对多维数组进行排序,php,arrays,sorting,multidimensional-array,associations,Php,Arrays,Sorting,Multidimensional Array,Associations,我正在尝试用PHP对一些数据进行排序。下面是一个数组示例(第一列表示我仍希望与每行中各自的值关联的ID): 01.2.0 11520.0 215.5 3155.1 4.22.3 52070.8 6.2.8.2 首先,我想按第二列中的值按降序排列行: 52070.8 11520.0 215.5 3155.1 4.22.3 6.2.8.2 01.2.0 然后,保持第二列的值仍在其排列中,通过第二列中具有相同值的每组行,按升序排列第三个值: 52070.8 215.5 11520.0 3155.1 6
11520.0
215.5
3155.1
4.22.3
52070.8
6.2.8.2
首先,我想按第二列中的值按降序排列行: 52070.8
11520.0
215.5
3155.1
4.22.3
6.2.8.2
01.2.0
然后,保持第二列的值仍在其排列中,通过第二列中具有相同值的每组行,按升序排列第三个值: 52070.8
215.5
11520.0
3155.1
6.2.8.2
4.22.3
01.2.0
我已经尝试过PHP的数组排序函数,但是我不知道如何在保持行关联的同时执行这两个操作。一种方法是使用该函数创建自定义排序例程。在PHP中,有很多方法可以对数组进行排序,具体取决于您希望数据排序的方式、多维性、键排序等。此代码段根据上述输入和输出要求进行排序
$vals = array(
array('id' => 0, 'val1' => 1, 'val2' => 2.0),
array('id' => 1, 'val1' => 15, 'val2' => 20.0),
array('id' => 2, 'val1' => 15, 'val2' => 5.5),
array('id' => 3, 'val1' => 15, 'val2' => 55.1),
array('id' => 4, 'val1' => 2, 'val2' => 22.3),
array('id' => 5, 'val1' => 20, 'val2' => 70.8),
array('id' => 6, 'val1' => 2, 'val2' => 8.2)
);
usort($vals, 'sortfn');
function sortfn($a, $b)
{
if($a['val1'] == $b['val1'])
return ($a['val2'] > $b['val2']);
else
return ($a['val1'] < $b['val1']);
}
var_dump($vals);
$vals=array(
数组('id'=>0,'val1'=>1,'val2'=>2.0),
数组('id'=>1,'val1'=>15,'val2'=>20.0),
数组('id'=>2,'val1'=>15,'val2'=>5.5),
数组('id'=>3,'val1'=>15,'val2'=>55.1),
数组('id'=>4,'val1'=>2,'val2'=>22.3),
数组('id'=>5,'val1'=>20,'val2'=>70.8),
数组('id'=>6,'val1'=>2,'val2'=>8.2)
);
usort($VAL,'sortfn');
函数sortfn($a,$b)
{
如果($a['val1']=$b['val1'])
回报($a['val2']>$b['val2']);
其他的
回报($a['val1']<$b['val1']);
}
var_转储(VAL);
噢,谢谢你,这才是我真正需要的!仍然在学习PHP中的数组排序,所以我无法理解它。