非常简单:
// turn
array('foo', 'bar', 'hello', 'world');
// into
array('foo' => 'bar', 'hello' => 'world');
现在我正在使用:
do{
$arrayOut[current($arrayIn)] = next($arrayIn);
}while(next($arrayIn));
我想知道是否有办法在没有中间变量
$arrayOut
的情况下做到这一点。我可以编写一个函数,但这是一个单一的用例,我试图保持我的脚本整洁。我只是想知道我在文档中是否遗漏了可以用于此目的的内容。这些值来自路由路径:
route/to/controller/action/key1/value1/key2/value2
它爆炸了,最终在使用其他组件后,我只剩下
('key1', 'value1', 'key2', 'value2', ...)
谢谢各位大侠的见解和建议。 Long Ears 凭借简洁的方法赢得了这一奖项,当扩展到“1 行”以上时,它并不是非常神秘(至少我不这么认为)
然而,同样关于 Long Ears '的建议,也许我对语义精确且冗长最少的代码的渴望已经让我变得更好了,我正在追逐雏菊试图保持我的可变范围“无污染物”,用我自己的话说.
最佳答案
您可以稍微提高现有代码的效率(每次迭代删除一个函数调用,在开始时为一个:)
$b = array();
array_unshift($a, false);
while (false !== $key = next($a)) {
$b[$key] = next($a);
}
好的,(不寒而栗)这是你的一个类轮:
$b = call_user_func_array('array_merge', array_map(function($v) { return array($v[0] => $v[1]); }, array_chunk($a, 2)));