原数组是
array( '0'=>array( 'id'=>'1', 'name'=>'张三', ), '1'=>array( 'id'=>'2', 'name'=>'李四', ) ...... )
用最有效率的方案转换成(能用内置函数就用内置函数)
array( '1'=>'张三', '2'=>'李四', ...... )
没有PHP内置函数可以实现这个效果,要实现相反的效果可以用array_chunk()
所以只能这样:
while($ele = array[$i]) { $new_array[$ele['id']]=$ele['name']; }
你可以尝试着测试一下性能,看看while ($ele = array[$i]) 和 while (list(...)...),还有for() 哪个更快,应该是都比foreach快,不过差距非常小就是了,从代码简洁角度,我还是推荐foreach()
更新:foreach()比list() = each()慢是我8年前的经验了,刚刚看了一下http://www.phpbench.com/,foreach居然是最快的。我仍然要多说一句,他们的性能差距微小到可以忽略。
更新:array_chunk()不能实现相反的效果,因为原数组每个元素有相同的字符下标,大家别被我误导了。
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。