首页 > 解决方案 > 对子数组进行排序,以便每个子数组中的对应值按数字顺序排列?

问题描述

我需要一个自定义排序函数,它将采用二维数组值,并对子数组进行排序,以便每个子数组中的对应值按数字顺序排列。任何值为 -1 的内容都可以忽略。

由于这很难用文字来解释,所以这里举个例子。从以下内容开始:

[
    ["1st"] => [ [0] =>  0    [1] =>  0    [2] =>  0 ]
    ["2nd"] => [ [0] =>  2    [1] =>  2    [2] =>  3 ]
    ["3rd"] => [ [0] =>  3    [1] => -1    [2] => -1 ]
    ["4th"] => [ [0] =>  5    [1] =>  6    [2] => 11 ]
    ["5th"] => [ [0] => -1    [1] =>  3    [2] =>  4 ] 
    ["6th"] => [ [0] => -1    [1] =>  4    [2] => -1 ]
    ["7th"] => [ [0] => -1    [1] =>  5    [2] => 10 ]
    ["8th"] => [ [0] => -1    [1] => -1    [2] =>  2 ]
    ["9th"] => [ [0] => -1    [1] => -1    [2] =>  5 ]
]

["4th"][1] 高于任何其他 [1] 列值,因此需要将其移至末尾。接下来,有 2 个值乱序的 [2] 行。将它们放置在适当的位置后,数组应如下所示:

[
    ["1st"] => [ [0] =>  0    [1] =>  0    [2] =>  0 ]
    ["8th"] => [ [0] => -1    [1] => -1    [2] =>  2 ]
    ["2nd"] => [ [0] =>  2    [1] =>  2    [2] =>  3 ]
    ["3rd"] => [ [0] =>  3    [1] => -1    [2] => -1 ]
    ["5th"] => [ [0] => -1    [1] =>  3    [2] =>  4 ]
    ["9th"] => [ [0] => -1    [1] => -1    [2] =>  5 ]    
    ["6th"] => [ [0] => -1    [1] =>  4    [2] => -1 ]
    ["7th"] => [ [0] => -1    [1] =>  5    [2] => 10 ]
    ["4th"] => [ [0] =>  5    [1] =>  6    [2] => 11 ]
]

忽略 -1 值,[0] 列现在读取“0, 2, 3, 5”,[1] 列读取“0, 2, 3, 4, 5, 6”,[2] 列读作“0、2、3、4、5、10、11”。

这要求行可以说是“一致的”,并且不适用于每种情况。我通常了解我需要在这里做什么,我只是不确定如何将其编写为实际代码。

我将使用它来确定元素在网站上显示的顺序,因此我需要一个 PHP 解决方案。(我可能也想要一个 JavaScript 版本,但是一旦我有一些在 PHP 中工作的东西,我就可以自己解决)。

标签: phpsorting

解决方案


推荐阅读