PHP中提取多维数组的特定列是一个很常用的函数。正因为如此,PHP在5.5.0版本之后增加了一个特殊的函数array_column()。当然,如果你的PHP版本低于5.5.0,就得用其他方法了。例如,对于以下数组:$user=array('0'=>array('id'=>100,'username'=>'a1'),'1'=>array('id'=>101,'用户名'=>'a2'),'2'=>数组('id'=>102,'用户名'=>'a3'),'3'=>数组('id'=>103,'用户名'=>'a4'),'4'=>array('id'=>104,'用户名'=>'a5'),;我们要提取usename列,它变成:$username=array('a1','a2','a3','a4','a5');有以下方法。1array_column函数方法这是最简单的方法,但是PHP版本必须是5.5.0及以上,方法:$username=array_column($user,'username');2array_walk函数方法array_walk()函数使用用户自己定义一个函数对数组中的每个元素做回调处理,实现当前函数:$username=array();array_walk($user,function($value,$key)use(&$username){$username[]=$value['username'];});3array_map函数方法array_map()函数类似于array_walk(),对给定的单元格应用回调函数大批。$username=array();array_map(function($value)use(&$username){$username[]=$value['username'];},$user);4foreach循环方法foreach循环相对于上述方法效率稍差,但简单易懂。$用户名=数组();foreach($useras$value){$username[]=$value['username'];}5array_map变体方法如下,意思是把$user数组中每一项值的起始值去掉,并将移除的值作为新数组获取。注意新数组$username的key还是原数组$user的key,如下。$username=array_map('array_shift',$user);注意:此函数获取$user中的id列,而不是username列。另外,如果需要获取二维数组每一项的起始列或结束列,也可以这样做:$username=array_map('reset',$user);$username=array_map('end',$user);this三种变体方法功能比较有限,只在获取第一列或最后一列时有用,在复杂数组中很难发挥作用。
