【发布时间】:2014-01-08 18:55:37
【问题描述】:
如何根据另一个数组对一个数组进行排序? 我说的是价值观,而不是钥匙。我发现了很多关于如何对键进行排序的问题,但没有发现关于值的问题。
想象一下我有这个数组:
$sizes = array("L", "XXXL", "M", "S");
我怎样才能将它们重新排序为这样:
$newsizes = array("S", "M", "L", "XXXL");
基于这样一个固定的人类逻辑数组:
$sizeincrement = array("XS", "S", "M", "L", "XL", "XXL", "XXXL");
考虑到不在 sizeincrement 数组中的元素应该附加在末尾。
我认为这将作为一个现成的排序功能存在,但事实并非如此:PHP SORTING
【问题讨论】:
-
array_intersect() 将执行您需要的排序,而无需使用自定义函数或 usort。见my answer。
-
@DigitalChris 虽然是否相交、然后是差异、然后合并数组确实是一种比 usort 更有效的方法是有争议的。 =)
-
@jszobody 不,我认为您错过了重点。我还回答了他关于“不在 sizeincrement 数组中的元素应附加在末尾”的第二部分。单线 array_intersect 完成了其他答案所做的事情。
-
确实唯一错误的部分是不存在的元素被前置而不是附加3v4l.org/C2LtC