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