クラスに次のようなメソッドがあります。
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コードをループで簡単に書くことができますが、さまざまな配列関数を使用する賢い方法がありますか?速度 -- 問題があればテストします)。
ある意味、これはまだ答えがわからない頭の体操です。明示的なループなしで実行することは重要ではありませんが、実行できるかどうかは興味があります。私はそれに30分ほど費やしましたが、まだ解決策を見つけていません。