PHP-根据索引=>子数组的值对数组进行排序

时间:2019-01-26 11:17:41

标签: php arrays sorting

我正在尝试做一些事情:我有一个这样布置的数组:

Array ( [0] => Nocciole con guscio 1000gr;;1;€5,50;0;0;No;0;
        [1] => Abbonamento Box Piccola - 4 Box;1;1;€60,00;0;0;Sì;4; 
        [2] => Box Media - Mista;2;1;€27,00;0;0;No;0; 
        [3] => La Tua Box - Piccola;1;1;€25,00;Mele, Pere;Finocchi, Radicchio Tondo, Cetrioli, Peperoni Rossi;No;0; 
        [4] => Abbonamento Box Piccola - 4 Box;1;1;€60,00;0;0;Sì;4; 
        [5] => Abbonamento Box Grande - 8 Box;3;1;€200,00;0;0;Sì;8; 
        [6] => Box Piccola - Mista;1;1;€20,00;0;0;No;0; 
        [7] => Abbonamento Box Media - 4 Box;2;1;€80,00;0;0;Sì;4; ) 

如您所见,所有值都经过格式化,以便我可以轻松地将它们分解为单个数组。每个人都看起来像这样:

Subarray ( [0] => Abbonamento Box Piccola - 4 Box 
           [1] => 1
           [2] => 1 
           [3] => €60,00
           [4] => 0 
           [5] => 0 
           [6] => Sì 
           [7] => 4 
           [8] => )

我需要做的是按Subarray [1]的降序对第一个数组进行排序(请注意,索引1包含一个字符串),以便Subarray保持其index => value结构的原始状态。有任何线索吗?

1 个答案:

答案 0 :(得分:0)

假设您的数组名称为$arr,您可以尝试如下操作:

usort($arr, function($a, $b){
    $a = (int) explode(';', $a)[1];
    $b = (int) explode(';', $b)[1];

    if ($a === $b) {
        return 0;
    }

    return ($a < $b) ? 1 : -1;
});

关于3v4l的示例

https://3v4l.org/Fm6vW

来自PHP手册:

https://secure.php.net/manual/en/function.usort.php