PHP clasifica los resultados de array_intersect_key () por segunda matriz

Tengo un método en una clase que se parece a esto;

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) );
    }

Pero esto no es útil, ya que la persona que llama al método no conoce el orden de los pares de clave / elemento en la matriz asociativa en la variable de instancia $ oculta. Idealmente, la matriz devuelta estaría exactamente en el mismo orden que las claves especificadas en $ list. Por ejemplo:

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

Puedo escribir fácilmente algún código PHP explícito y detallado en un bucle para hacer esto, pero hay alguna forma inteligente de usar las diversas funciones de matriz, por ejemplo. array_multisort () para escupir esto en líneas mínimas de código (y, con suerte, a la velocidad del código compilado, lo probaré, si es importante).

En cierto sentido, este es un enigma para el que todavía no sé la respuesta. No es crítico que lo haga sin un bucle explícito, pero tengo curiosidad por saber si se puede hacer. Pasé unos 30 minutos en eso y todavía no he encontrado una solución.

Respuestas a la pregunta(1)

Su respuesta a la pregunta