七七小影视 潜水
  • 7发帖数
  • 7主题数
  • 0关注数
  • 0粉丝
开启左侧

PHP二维数组(多维数组)转换成一维数组的方法汇总

[复制链接]
七七小影视 发表于 2021-8-27 11:44:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
1 array_column函数法
2 array_walk函数法
3 array_map函数法
4 foreach循环法
5 array_map变种
6 array_walk_recursive函数法

1 array_column()用PHP内置的 array_column()函数是最简单的方法,限制是PHP版本必须是5.5.0及以上版本。例如:以上例程会输出:Array(   [0] => John   [1] => Sally   [2] => Jane   [3] => Peter)2 array_walk()函数使用用户自定义函数对数组中的每个元素做回调处理,实现当前功能的方法:    $username = array();     array_walk($user, function($value, $key) use (&$username){                               $username[] = $value['username'];            });以上例输出:Before ...:d. lemona. orangeb. bananac. apple... and after:d. fruit: lemona. fruit: orangeb. fruit: bananac. fruit: apple3 array_map()函数和array_walk() 作用类似,将回调函数作用到给定数组的单元上。$username = array();array_map(function($value) use (&$username){                 $username[] = $value['username'];}, $user);这使得 $b 成为:Array( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125)例如,对于以下这个数组:$user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' => 101, 'username' => 'a2'), '2' => array('id' => 102, 'username' => 'a3'), '3' => array('id' => 103, 'username' => 'a4'), '4' => array('id' => 104, 'username' => 'a5'),);我们要提取其中的 usename 列,酿成:$username = array('a1', 'a2', 'a3', 'a4', 'a5');4 foreach循环法foreach循环相对上面的方法效率稍微低一些,但简单轻易理解。$username = array();foreach ($user as $value) { $username[] = $value['username'];}5 array_map变种方法如下,意为把$user数组的每一项值的开头值移出,并获取移除的值作为新数组。注意此时新数组$username的键仍是原数组$user的键,如下。$username = array_map('array_shift', $user);注意:该功能会获取$user中的 id 列,而不是 username 列。另外,如果需要获取二维数组每一项的开头列或结尾列,也可以如许做:$username = array_map('reset', $user);$username = array_map('end', $user);这三个变种方法作用比较局限,仅在获取第一列或最后一列的时候有用,在复杂的数组中就难以发挥作用了。6 array_walk_recursive函数法用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一维数组。$result = [];array_walk_recursive($user, function($value) use (&$result) { array_push($result, $value);});例如,下面这个多维数组:$user4 = array( 'a' => array(100, 'a1'), 'b' => array(101, 'a2'), 'c' => array( 'd' => array(102, 'a3'), 'e' => array(103, 'a4'), ),);用这个方法后就酿成:$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城