php按预定义的顺序对数组进行排序

标签 php arrays sorting

这个问题在这里已经有了答案:





How do I sort the following array? [duplicate]

(3 个回答)


8 年前关闭。




我正在努力尝试通过普通函数对数组进行排序,我确定这需要一个自定义比较函数,但仍然会在那里扔掉它。

我有一个包含 5 个元素的数组。我希望数组像这样对自己进行排序,arsort 接近但不完全:

4,0,1,2,3

只是为了澄清,数组的位置如下: $array[0];

我之前实际上没有研究过数组比较函数,因此朝着正确的方向插入对解决这个问题最有帮助!

谢谢,

亚当

最佳答案

此方法将使用 uksort 使用预定义的键顺序对数组进行排序。

$desiredIndexOrder = array(4 => 1, 0 => 2, 1 => 3, 2 => 4, 3 => 5);

uksort($inputArray, function($a, $b) use ($desiredIndexOrder) {
    return $desiredIndexOrder[$a] > $desiredIndexOrder[$b] ? -1 : 1;
});

注意 $desiredIndexOrder数组在 index => desired sort position格式。如果您不想将数组置于该格式中,则可以使用以下命令为您构建它:
$desiredIndexOrder = array();

foreach ($desiredKeyOrder as $position=>$key) {
    $desiredIndexOrder[$key] = $position + 1;
}

哪里$desiredKeyOrder是您的键的数组顺序:array(4, 0, 1, 2, 3)

关于php按预定义的顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294932/

相关文章:

php - 用户对 MySQL 数据库的访问被拒绝

php - 我怎样才能知道网站的访问者数量?

python - Numpy 创建一个空的 alpha 图像

php - 从一个数组中的sql中获取数据

mysql - ORDER BY 子句如何从 1 而不是 0 开始对记录进行排序

javascript - 根据按下的字段使用 Jinja2 和 Flask 对对象列表进行排序

php - 通过 TLS 的显式 FTP 失败 : Warning: ftp_fput(): data_accept: SSL/TLS handshake failed

PHP JWT 签名无效

arrays - 减去R中具有不同大小的数组

java - 尝试为给定字段上的给定类创建比较器时出错