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 минут и пока не нашел решения.