PHP多维数组处理

Array ( [诸葛亮] => Array ( 
  [三十六记] => 
  Array ( [兵法] => 战略 ) ) 
  [PHP] => Array ( 
  [PHP技术] => Array ( 
  [技术] => 战略 ) ) 


这样一个数组的子数组的没确定,比如数组也可能是
Array ( [诸葛亮] => 战略) 
  [PHP] => Array ( 
  [PHP技术] => Array ( 
  [技术] => 战略 ) ) 


怎么处理使数组值变成:
array(
  array('诸葛亮','三十六记','兵法','战略')
  array('PHP','PHP技术','技术','战略')
)

作者: chenping1984   发布时间: 2011-05-31

PHP code
函数名称:array_multi2single
函数原形:array array_multi2single(array)
实现功能:把一个多维数组的数值存放到一维数组中,不保存Key。

<?php

function array_multi2single($array)
{
    static $result_array=array();
    foreach($array as $value)
    {
        if(is_array($value))
        {
            array_multi2single($value);
        }
        else  
            $result_array[]=$value;
    }
    return $result_array;
} 

作者: sibang   发布时间: 2011-05-31

正解:
$tree = Array ('诸葛亮' => Array ( 
  '三十六记' => 
  Array ( '兵法' => '战略' ) ) ,
  'PHP' => Array ( 
  'PHP技术' => Array ( 
  '技术' => '战略' ) ) 
) ;

function combine_keys( $arr,$root='' )
{
  static $a = array();
  foreach( $arr as $k=>$v)
  {
  $t[] = !empty($root) ? ($root."-".$k) : $k;
  if( is_array($v))
  {
  combine_keys($v,end($t));
  }
  else{
  $a[] = array_merge(explode('-',end($t)),array($v));
  }
  }
  return $a;
}

echo "<pre/>";
print_r(combine_keys( $tree ));

作者: chenping1984   发布时间: 2011-05-31