Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用多个键对多维数组进行排序_Php_Arrays_Sorting_Multidimensional Array_Associations - Fatal编程技术网

在PHP中使用多个键对多维数组进行排序

在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

我正在尝试用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.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中的数组排序,所以我无法理解它。