我有一个类中的方法看起来像这样;
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分钟左右的时间,但还没有找到解决方案。
extract()
。 - goat