将multidimensional array转换为单个数组

我有一个没有理由的multidimensional array

/* This is how my array is currently */ Array ( [0] => Array ( [0] => Array ( [plan] => basic ) [1] => Array ( [plan] => small ) [2] => Array ( [plan] => novice ) [3] => Array ( [plan] => professional ) [4] => Array ( [plan] => master ) [5] => Array ( [plan] => promo ) [6] => Array ( [plan] => newplan ) ) ) 

我想将这个数组转换成这种forms

 /*Now, I want to simply it down to this*/ Array ( [0] => basic [1] => small [2] => novice [3] => professional [4] => master [5] => promo [6] => newplan ) 

任何想法如何做到这一点?

假设这个数组可能或者不可能是多余的嵌套,你不确定它有多深,这应该为你展平:

 function array_flatten($array) { if (!is_array($array)) { return FALSE; } $result = array(); foreach ($array as $key => $value) { if (is_array($value)) { $result = array_merge($result, array_flatten($value)); } else { $result[$key] = $value; } } return $result; } 
 $array = array_column($array, 'plan'); 

第一个参数是一个数组| 第二个参数是数组键。

注意: array_column是在PHP 5.5中引入的,因此在早期版本中不起作用。

只要把它分配给它自己的第一个元素:

 $array = $array[0]; 
  $singleArray = array(); foreach ($multiDimensionalArray as $key => $value){ $singleArray[$key] = $value['plan']; } 

这是从multiDimensionalArray数组创build数组的最佳方法。

谢谢

对于这个特定的情况,这将做到:

 $array = array_map('current', $array[0]); 

基本上这个问题是完全一样的,看看这里的一些答案: PHP数组从未知数量的参数合并 。

你可以使用循环来完成。

  $singleArray = array(); foreach ($multiDimensionalArray as $key => $value){ $singleArray[$key] = $value['plan']; } 

最近我一直在使用AlienWebguy的array_flatten函数,但它给了我一个很难find原因的问题。
array_merge会导致问题,这也不是我第一次遇到问题。
如果在另一个内部数组中具有相同的数组键,则后面的值将覆盖合并数组中的前一个数组键。

以下是不使用array_merge的array_flatten版本:

 function array_flatten($array) { if (!is_array($array)) { return FALSE; } $result = array(); foreach ($array as $key => $value) { if (is_array($value)) { $arrayList=array_flatten($value); foreach ($arrayList as $listItem) { $result[] = $listItem; } } else { $result[$key] = $value; } } return $result; } 

我用OOP风格做了这个

 $res=[1=>[2,3,7,8,19],3=>[4,12],2=>[5,9],5=>6,7=>[10,13],10=>[11,18],8=>[14,20],12=>15,6=>[16,17]]; class MultiToSingle{ public $result=[]; public function __construct($array){ if(!is_array($array)){ echo "Give a array"; } foreach($array as $key => $value){ if(is_array($value)){ for($i=0;$i<count($value);$i++){ $this->result[]=$value[$i]; } }else{ $this->result[]=$value; } } } } $obj= new MultiToSingle($res); $array=$obj->result; print_r($array); 

multidimensional array与单行代码的单个数组! 享受代码。

 $array=[1=>[2,5=>[4,2],[7,8=>[3,6]],5],4]; $arr=[]; array_walk_recursive($array, function($k){global $arr; $arr[]=$k;}); print_r($arr); 

…享受代码。

 $flattenArray = []; foreach ($parentArray as $childArray) { foreach ($childArray as $value) { $flattenArray[] = $value; } }