【发布时间】:2025-12-21 00:50:16
【问题描述】:
我想按子数组的出现次数对多维数组进行排序。
这是我的多维数组(它可以包含任何子数组,包含任何随机排序的值,这仅用于测试目的):
$items = array (
array ("00008", "Metal", "Melvins", "Working With God", "Sub Pop", "SP 009"),
array ("00019", "LP", "Ray Parker", "The Other Woman", "EMI", "EMI02"),
array ("00019", "LP", "Ray Parker", "The Other Woman", "EMI", "EMI02"),
array ("00019", "LP", "Ray Parker", "The Other Woman", "EMI", "EMI02"),
array ("00021", "Techno", "Laurent Garnier", "Water Planet", "F Communications", "SDB00015"),
array ("00056", "LP", "Communards", "Communards", "RCA", "E 342-F"),
array ("00056", "LP", "Communards", "Communards", "RCA", "E 342-F"));
这样排序后的多维数组就变成了:
$items = array (
array ("00019", "LP", "Ray Parker", "The Other Woman", "EMI", "EMI02"),
array ("00019", "LP", "Ray Parker", "The Other Woman", "EMI", "EMI02"),
array ("00019", "LP", "Ray Parker", "The Other Woman", "EMI", "EMI02"),
array ("00056", "LP", "Communards", "Communards", "RCA", "E 342-F"),
array ("00056", "LP", "Communards", "Communards", "RCA", "E 342-F"),
array ("00008", "Metal", "Melvins", "Working With God", "Sub Pop", "SP 009"),
array ("00021", "Techno", "Laurent Garnier", "Water Planet", "F Communications", "SDB00015"));
目的是先出现3次的子数组,再出现2次的子数组。一次出现的所有子数组都可以随机出现。
可以使用单线完成吗?
例如:排序唯一性可以这样完成:
$uniques = array_intersect_key ($items, array_unique (array_map ("serialize", $items)));
非常感谢您帮助我!
【问题讨论】:
-
当您说“子数组的数量”时,您的意思是子数组中的第一项,就像一个ID,对吧?所以
00019是第一个,因为有三个子数组具有类似 ID 的东西。
标签: php arrays sorting multidimensional-array