如何在php中使用二维数组创建关联数组


How to create an associative array using a 2 dimentional array in php?

如何使用下面的数组创建一个关联数组,以最快和最短的方式。

$list = array(array('name', 'aram'), array('family', 'alipoor'));

类似:

$list = array('name' => 'aram', 'family' => 'alipoor');

我能想到的最短的:

$newlist = array();
foreach ( $list as $keyval ) {
    $newlist[ $keyval[0] ] = $keyval[1];
}
$assocArray = array();
foreach($list as $subArray)
{
    $assocArray[$subArray[0]] = $subArray[1];
}

糟糕的方法,但是

$lst = array_combine(array_map('array_shift',$list), array_map('array_pop',$list));

对于双元素内部数组只能工作。

注意:三个隐式循环。所以最好使用Rijk van Wel或kevinmajor1的方法

我一般认为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());

这也证明了这一点。它几乎不会比每一个都快,在任何情况下,速度差异在您的情况下肯定无关紧要。