如何使用下面的数组创建关联数组,以最快和最短方式。
$list = array(array('name', 'aram'), array('family', 'alipoor'));
类似的东西:
$list = array('name' => 'aram', 'family' => 'alipoor');
答案 0 :(得分:3)
$assocArray = array();
foreach($list as $subArray)
{
$assocArray[$subArray[0]] = $subArray[1];
}
答案 1 :(得分:2)
我能想到的最短的时间:
$newlist = array();
foreach ( $list as $keyval ) {
$newlist[ $keyval[0] ] = $keyval[1];
}
答案 2 :(得分:0)
可怕的方法,但
$lst = array_combine(array_map('array_shift',$list), array_map('array_pop',$list));
仅限 用于双元素内部数组。
注意:此解决方案中有三个隐式循环。所以更好地使用Rijk van Wel或kevinmajor1回答的方法
答案 3 :(得分:0)
我一般认为foreach非常易读并且通常非常快。如果你想要它在一行中,你也可以使用foreach:
$nl = array(); foreach($list as $k=>$v) $nl[$k]=$v; $list = $nl; unset($nl);
这基本上表明获得某些“单线”没有价值。
或者,如果您因某些原因而不喜欢回调,我不知道:
$list = array_reduce($list, function($v,$w) {return $v+array($w[0]=>$w[1]);}, array());
这也证明了这一点。它几乎不会比foreach快,在任何情况下,速度差异在你的情况下肯定无关紧要。