php 多维数组 转变为 一维数组 键值不变

 1     echo "<pre>";
 2    
 3    
 4     /*[
 5     
 6         合并多个数组为一维数组,键值不变
 7         被合并的数组维数不限
 8         $params = array($arr1,$arr2,$arr3,...);
 9     
10     ]*/
11 
12     function multiArrToOneArrWithKeepKeys($params = array()){
13         if(empty($params) === TRUE)
14             return array('msg'=>'nothing with array');
15         
16         $keys = array();
17         $vals = array();
18         
19         $params = multiArrToTwoArr($params);
20     
21         foreach($params as $key => $val){
22                 
23                 foreach($val as $k => $v){
24                         $keys[] = $k;
25                         $vals[] = $v;
26                 }
27         }
28 
29         return array_combine($keys,$vals);
30 
31     }
32     
33     
34     function multiArrToTwoArr($params =array()){
35         static $array ;
36         
37         if(is_array($params)){
38             foreach($params as $k=>$p){            
39                 if(is_array($p))
40                     multiArrToTwoArr($p);                    
41                 else
42                     $array[] = array($k=>$p);                    
43             }
44         }
45         
46         return $array;
47     
48     }
49    
50     
51    
52    
53     
54 
55    
56    
57     $in_param = array(
58             '今天1'=>'今天',
59             '今天2'=>'今天',
60             '今天3'=>'今天',
61             '今天4'=>'今天',
62             array(
63             '明天1'=>'明天',
64             '明天2'=>'明天',
65             '明天3'=>'明天',
66             '明天4'=>'明天',
67                 array(
68                 '后天1'=>'后天',
69                 '后天2'=>'后天',
70                 '后天3'=>'后天',
71                 '后天4'=>'后天',
72                     array(
73                         '大后天1'=>'大后天',
74                         '大后天2'=>'大后天',
75                         '大后天3'=>'大后天',
76                         '大后天4'=>'大后天'                        
77                     )
78                 )
79             )
80     );
81    
82     //$rrt = (multiArrToTwoArr($in_param));
83    
84     //print_r($rrt);   
85    
86     $rst = multiArrToOneArrWithKeepKeys($in_param);
87    
88    
89    
90 
91    print_r($rst);

 

posted @ 2013-10-28 15:18  猿来如些  阅读(536)  评论(0编辑  收藏  举报