基于子数组[0](unix)值的排序数组

GRO*_*ER. 3 php arrays json

我需要一个按Unix时间戳值排序的数组。我尝试同时使用这两者ksortkrsort然后才意识到有时时间戳值可能是相同的(并且数组中不能有重复的键)。

这是我可能会遇到的一个示例数组:

$array = array(
    [
        "unix"      => 1556547761, // notice the two duplicate unix values
        "random"    => 4
    ],
    [
        "unix"      => 1556547761,
        "random"    => 2
    ],
    [
        "unix"      => 1556547769,
        "random"    => 5
    ],
    [
        "unix"      => 1556547765, // this should be in the 3rd position
        "random"    => 9
    ]
);
Run Code Online (Sandbox Code Playgroud)

所以我想做的是根据每个子数组的unix值对它们进行排序,但是我不知道该怎么做。我尝试了无数疯狂的方法(包括所有其他sort功能以及许多很多for循环)来弄清楚-但无济于事。

感谢所有帮助。

dWi*_*der 5

您可以使用usort通过给定功能对数组进行排序

将函数定义为:

function cmpByUnix($a, $b) {
    return $a["unix"] - $b["unix"];
}
Run Code Online (Sandbox Code Playgroud)

并用于: usort($array, "cmpByUnix");

直播示例:3v4l

注意,您也可以使用,asort($array);但这也将比较“ random”字段并保留密钥-如果需要,请查看Mangesh答案