基于一维数组的PHP多维数组重排序

基于一维数组的PHP多维数组重排序,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,多维数组 Array ( [0] => Array ( [ID] => 5068 [Item] => 2737 [Unit] => 15 ) [1] => Array ( [ID] => 5067 [Item] => 2737 [Unit] =>

多维数组

Array
(
    [0] => Array
        (
            [ID] => 5068
            [Item] => 2737
            [Unit] => 15
        )
    [1] => Array
        (
            [ID] => 5067
            [Item] => 2737
            [Unit] => 13
        )

)
Array (
    [0] => 11
    [1] => 13
    [2] => 15 
)
一维阵列

Array
(
    [0] => Array
        (
            [ID] => 5068
            [Item] => 2737
            [Unit] => 15
        )
    [1] => Array
        (
            [ID] => 5067
            [Item] => 2737
            [Unit] => 13
        )

)
Array (
    [0] => 11
    [1] => 13
    [2] => 15 
)
预期产出:

Array
(
    [0] => Array
        (
            [ID] => 5067
            [Item] => 2737
            [Unit] => 13
        )
    [1] => Array
        (
            [ID] => 5068
            [Item] => 2737
            [Unit] => 15
        )

)

一维数组不必按ASC/DESC顺序排列。我想根据基于单位值的一维数组对多维数组重新排序。我怎样才能做到这一点呢?

也许类似的方法可以奏效

$multiDimArray = [
    0 => [
        'ID' => 5068,
        'Item' => 2737,
        'Unit' => 15
        ],
    1 => [
        'ID' => 5067,
        'Item' => 2737,
        'Unit' => 13
    ]
];

$singleDim = [
    11,13,15
];

usort($multiDimArray,function($a,$b){
    global $singleDim;
    return ($singleDim[0] >= $a['Unit']) ? -1 :1;
});

print_r($multiDimArray);

我的后脑勺里有些东西告诉我我错过了什么。但是可以随意试一试。

假设单个数组中的值都映射到
单元中的值,您可以循环单个维度数组,然后循环多维数组中的值

在内部循环中,使用
In_array
检查多维数组中是否出现了来自一维数组的值。如果有,您可以将其添加到一个新数组中

$result = [];

foreach ($singleDimension as $sm) {
    foreach ($multiDimensional as $md) {
        if (in_array($sm, $md)) {
            $result[] = $md;
        }
    }
}