如何在 PHP 中展平数组?

Posted

技术标签:

【中文标题】如何在 PHP 中展平数组?【英文标题】:How to flatten array in PHP? 【发布时间】:2014-05-21 11:04:30 【问题描述】:

我有一个包含 4 个数组的数组,每个数组有一个值。

array(4) 
  [0]=>
  array(1) 
    ["email"]=>
    string(19) "test01@testmail.com"
  
  [1]=>
  array(1) 
    ["email"]=>
    string(19) "test02@testmail.com"
  
  [2]=>
  array(1) 
    ["email"]=>
    string(19) "test03@testmail.com"
  
  [3]=>
  array(1) 
    ["email"]=>
    string(19) "test04@testmail.com"
  

扁平化数组以使其仅包含电子邮件地址作为值的最佳(=最短,首选原生 php 函数)方法是什么:

array(4) 
  [0]=>
  string(19) "test01@testmail.com"
  [1]=>
  string(19) "test02@testmail.com"
  [2]=>
  string(19) "test03@testmail.com"
  [3]=>
  string(19) "test04@testmail.com"

【问题讨论】:

【参考方案1】:

您可以使用 RecursiveArrayIterator 。这甚至可以使多嵌套数组变平。

<?php
$arr1=array(0=> array("email"=>"test01@testmail.com"),1=>array("email"=>"test02@testmail.com"),2=> array("email"=>"test03@testmail.com"),
    3=>array("email"=>"test04@testmail.com"));
echo "<pre>";
$iter = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr1));
$new_arr = array();
foreach($iter as $v) 
    $new_arr[]=$v;

print_r($new_arr);

OUTPUT:

Array
(
    [0] => test01@testmail.com
    [1] => test02@testmail.com
    [2] => test03@testmail.com
    [3] => test04@testmail.com
)

【讨论】:

也是不错的方法,但我更喜欢@moonwave99 的回答,因为它是一个精简的单线。 @GottliebNotschnabel,没问题。我建议将此作为通用解决方案,因为它甚至可以在多维数组上使用。【参考方案2】:

在 PHP 5.5 中你有 array_column:

$plucked = array_column($yourArray, 'email');

否则,请使用array_map

$plucked = array_map(function($item) return $item['email'];, $yourArray);

【讨论】:

或者如果你没有PHP 5.5,可以使用官方函数作者array_columngithub.com/ramsey/array_column的userland实现 很好,正是我想要的。谢谢!

以上是关于如何在 PHP 中展平数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中将多维数组“展平”为简单数组? [复制]

如何在javascript中展平嵌套数组? [复制]

如何在一维数组中“展平”或“索引”3维数组?

如何在熊猫数据框中展平数组

如何在 Swift 中快速展平数组?

在 PHP 中展平 JSON 多级数组