根据 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));