如何在 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_column
github.com/ramsey/array_column的userland实现
很好,正是我想要的。谢谢!以上是关于如何在 PHP 中展平数组?的主要内容,如果未能解决你的问题,请参考以下文章