У меня есть большой массив как $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);
Вероятно, самым простым было бы вычислить пересечение, и оно вернется в порядке первого массива:
$subArr1 = array_intersect($orderArr, $subArr1);
Это вернется с ключами первого массива; если вы хотите переиндексировать вместо этого:
$subArr1 = array_values(array_intersect($orderArr, $subArr1));