我需要一个按Unix时间戳值排序的数组。我尝试同时使用这两者ksort,krsort然后才意识到有时时间戳值可能是相同的(并且数组中不能有重复的键)。
这是我可能会遇到的一个示例数组:
$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循环)来弄清楚-但无济于事。
感谢所有帮助。
您可以使用usort通过给定功能对数组进行排序
将函数定义为:
function cmpByUnix($a, $b) {
return $a["unix"] - $b["unix"];
}
Run Code Online (Sandbox Code Playgroud)
并用于: usort($array, "cmpByUnix");
直播示例:3v4l
注意,您也可以使用,asort($array);但这也将比较“ random”字段并保留密钥-如果需要,请查看Mangesh答案
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |