根据 php 中数组的顺序对子数组进行排序?
Sort a subArray by based on order of Array in php?
我有一个很大的数组 $orderArr:
$orderArr = array("IZQ", "AOH", "VNP", "ICW", "IOQ", "BXP", "SHH", "EAY", "ZAF", "CUW");
看起来像
Array ( [0] => IZQ [1] => AOH [2] => VNP [3] => ICW [4] => IOQ [5] => BXP [6] => SHH [7] => EAY [8] => ZAF [9] => CUW )
我有两个小数组 $subArr1 和 $subArr2:
$subArr1 = array("VNP", "BXP", "ICW", "IZQ");
$subArr2 = array("ZAF", "IZQ", "AOH");
看起来像
Array ( [0] => VNP [1] => BXP [2] => ICW [3] => IZQ )
Array ( [0] => ZAF [1] => IZQ [2] => AOH )
两个小数组(子数组)自己的元素都属于大数组
我想按照大数组的顺序对两个小数组进行排序,如下:
Array ( [0] => IZQ [1] => VNP [2] => ICW [3] => BXP )
Array ( [0] => IZQ [1] => AOH [2] => ZAF )
我正在寻找在 php 中执行此操作的最简单代码。欢迎提出任何建议。
您可以使用 usort
根据数组位置排序:
usort($subArr1, function ($a, $b) use ($orderArr) {
return (array_search($a, $orderArr) < array_search($b, $orderArr)) ? -1 : 1;
});
var_dump($subArr1);
可能最简单的方法是计算交集,它将return按照第一个数组的顺序:
$subArr1 = array_intersect($orderArr, $subArr1);
这将 return 与第一个数组的键;如果你想重新索引:
$subArr1 = array_values(array_intersect($orderArr, $subArr1));
我有一个很大的数组 $orderArr:
$orderArr = array("IZQ", "AOH", "VNP", "ICW", "IOQ", "BXP", "SHH", "EAY", "ZAF", "CUW");
看起来像
Array ( [0] => IZQ [1] => AOH [2] => VNP [3] => ICW [4] => IOQ [5] => BXP [6] => SHH [7] => EAY [8] => ZAF [9] => CUW )
我有两个小数组 $subArr1 和 $subArr2:
$subArr1 = array("VNP", "BXP", "ICW", "IZQ");
$subArr2 = array("ZAF", "IZQ", "AOH");
看起来像
Array ( [0] => VNP [1] => BXP [2] => ICW [3] => IZQ )
Array ( [0] => ZAF [1] => IZQ [2] => AOH )
两个小数组(子数组)自己的元素都属于大数组
我想按照大数组的顺序对两个小数组进行排序,如下:
Array ( [0] => IZQ [1] => VNP [2] => ICW [3] => BXP )
Array ( [0] => IZQ [1] => AOH [2] => ZAF )
我正在寻找在 php 中执行此操作的最简单代码。欢迎提出任何建议。
您可以使用 usort
根据数组位置排序:
usort($subArr1, function ($a, $b) use ($orderArr) {
return (array_search($a, $orderArr) < array_search($b, $orderArr)) ? -1 : 1;
});
var_dump($subArr1);
可能最简单的方法是计算交集,它将return按照第一个数组的顺序:
$subArr1 = array_intersect($orderArr, $subArr1);
这将 return 与第一个数组的键;如果你想重新索引:
$subArr1 = array_values(array_intersect($orderArr, $subArr1));