我怎样才能创建一个使用下面的数组,在最快和最短方式的关联数组。如何在php中使用2维数组创建关联数组?
$list = array(array('name', 'aram'), array('family', 'alipoor'));
喜欢的东西:
$list = array('name' => 'aram', 'family' => 'alipoor');
我怎样才能创建一个使用下面的数组,在最快和最短方式的关联数组。如何在php中使用2维数组创建关联数组?
$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];
}
如果没有任何循环,它会最短。是不是有任何方法可以在使用php函数的单行中做到这一点 –
定义长度的初始数组?否则,你必须有一个循环。 – Rijk
$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());
这表明这一点。它不会比以前更快,无论如何,速度差异在你的情况下肯定不重要。
是否可以安全地假设你没有遇到任何速度问题?另外:你如何衡量最快和最短?不是最快的总是最短的?或者是最短的代码组成的字符数? – hakre
在我的情况下,最快意味着写入速度最快(字符),速度并不重要。 –
请记住,代码经常被读取比写入更多,所以如果您打开了一个建议,则应该更加注意代码很容易(快速)阅读,而不是快速输入。 – hakre