PHP sortiert array_intersect_key () nach zweitem Array

Ich habe eine Methode in einer Klasse, die so aussieht.

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

Dies ist jedoch nicht sinnvoll, da der Aufrufer der Methode die Reihenfolge der Schlüssel / Element-Paare im assoziativen Array in der Instanzvariablen $ hidden nicht kennt. Idealerweise befindet sich das zurückgegebene Array in genau derselben Reihenfolge wie die in $ list angegebenen Schlüssel. Zum Beispiel:

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

Ich kann leicht expliziten, ausführlichen PHP-Code in eine Schleife schreiben, aber gibt es eine clevere Möglichkeit, die verschiedenen Array-Funktionen zu verwenden, z. array_multisort (), um dies in minimalen Codezeilen auszuspucken (und hoffentlich mit kompilierter Codegeschwindigkeit - ich werde es testen, wenn es darauf ankommt).

In gewisser Hinsicht ist dies ein Rätsel, auf den ich die Antwort noch nicht kenne. Es ist nicht kritisch, dass ich es ohne explizite Schleife mache, aber ich bin gespannt, ob es möglich ist. Ich habe ungefähr 30 Minuten damit verbracht und noch keine Lösung gefunden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage