I'am trying to rearrange an mutlidimensional array in a to a custom order. I'am matching the keys and if these key are present in an other array it should move to the top. I couldn't find any thing on the web nor any php functions that can do this.
$original = [
    1=>[
        1=>['brand'=> 'bmw' , 'color'=> 'white'],
        171=>['brand'=> 'audi' , 'color'=> 'black'],
        172=>['brand'=> 'volvo' , 'color'=> 'black'],
        175=>['brand'=> 'citroen' , 'color'=> 'green']
    ],
    129=>[
        201=>['brand'=> 'volkswagen' , 'color'=> 'grey'],
        206=>['brand'=> 'bentley' , 'color'=> 'grey'],
        209=>['brand'=> 'mazda' , 'color'=> 'blue'],
    ],
];
$filterOnArray = [172,175,209];
$result = [
    1=>[
        172=>['brand'=> 'volvo' , 'color'=> 'black'],//changed
        175=>['brand'=> 'citroen' , 'color'=> 'green'],//changed
        1=>['brand'=> 'bmw' , 'color'=> 'white'],       
        171=>['brand'=> 'audi' , 'color'=> 'black'],
       
    ],
    129=>[
        209=>['brand'=> 'mazda' , 'color'=> 'blue'],//changed
        201=>['brand'=> 'volkswagen' , 'color'=> 'grey'],
        206=>['brand'=> 'bentley' , 'color'=> 'grey']
    ],
];
Some code that I already have tried
        $sortedArray = [];//the main data
        $choosenFilters = [3,66,989];
        $newStackFilters = [];
        $unshiftArray = [];
        foreach ($sortedArray as $k => $v) {
            if (in_array($k, $choosenFilters)) {
                $sortedArray[$k] = $v;
                unset($sortedArray[$k]);
            } else {
                $newStackFilters[$k] = $v;
            }
        }
        $sortedArray = $unshiftArray + $newStackFilters;
 
    