PHP сортировка array_intersect_key () результаты по второму массиву

У меня есть метод в классе, который выглядит следующим образом;

class SomeClass {
    private $hidden = array(....);

    /**
     * @return array - numeric indexed array in order of $this->hidden.
     * Suitable for use by list(var1, var2, ...)
     */
    public function getAsList($list = array())
    {
       return array_values(array_intersect_key($this->hidden, array_flip($list) );
    }

Но это бесполезно, поскольку вызывающий метод не знает порядок пар ключ / элемент в ассоциативном массиве в переменной экземпляра $ hidden. В идеале возвращаемый массив должен быть в том же порядке, что и ключи, указанные в $ list. Например:

$foo = new SomeClass();
list($foo, $bar, $baz) = $foo->getAsList(array('foo', 'bar', 'baz');

Я могу легко написать какой-то подробный подробный PHP-код в цикле, чтобы сделать это, но есть ли какой-нибудь умный способ использовать различные функции массива, например, array_multisort (), чтобы выложить это в минимальные строки кода (и, надеюсь, со скоростью скомпилированного кода - я протестирую, если это имеет значение).

В некотором смысле, это головоломка, на которую я пока не знаю ответа. Это не критично, я делаю это без явного цикла, но мне любопытно, можно ли это сделать. Я потратил на это около 30 минут и пока не нашел решения.

Ответы на вопрос(1)

Ваш ответ на вопрос