1 <?php 2 $arr = [ 3 ‘name‘=>‘ll‘, 4 ‘info‘=>[ 5 ‘time‘=>‘2022‘, 6 ‘order‘=>[ 7 8 ‘suborder‘=>[ 9 ‘test2‘=>[‘type‘=>‘O1‘,‘orderId‘=>‘093232‘], 10 ‘test1‘=>[‘orderId‘=>‘393l93‘,‘type‘=>‘02‘], 11 ], 12 ‘id‘=>1, 13 ] 14 ], 15 ‘payDate‘=>‘2021‘ 16 ]; 17 18 /* 19 *@param mixed $arr 多维数组|键值
*@param $key_str string 本次递归的key
*@param $res string 最终结果 20 */ 21 function getMutilArrKeysAndValues(&$arr,$key_str=‘‘,&$res=‘‘){ 22 //无效数组,退出 23 if(empty($arr) && empty($key_str)) 24 return; 25 //如果是键值,直接将键($key_str)和键值$arr 26 if(!is_array($arr)) 27 return $key_str.‘=‘.$arr.‘&‘; 28 //根据键升序排序 29 ksort($arr); 30 31 foreach ($arr as $key => &$value){ 32 //保存本次调用函数时传入的键$key_str 33 $temp1 = $key_str; 34 35 if($key_str==‘‘) 36 $key_str=$key; 37 else 38 $key_str = $key_str.‘.‘.$key; 39 40 if(is_array($value)) { 41 //根据键升序排序 42 ksort($arr[$key]); 43 //遍历数组里的每个键值对 44 foreach ($value as $key2 => $value2) { 45 $temp =$key_str.‘.‘.$key2; 46 //再一次遍历$value里的键值对 47 $key_value_str = getMutilArrKeysAndValues($value2, $temp,$res); 48 $res .= $key_value_str; 49 } 50 } 51 else{ 52 //如果当前key的键值不是数组,直接通过‘=’连接 53 $key_value_str = $key_str.‘=‘.$value.‘&‘; 54 $res .= $key_value_str; 55 } 56 $key_str = $temp1; 57 } 58 } 59 60 $res = ‘‘; 61 getMutilArrKeysAndValues($arr,‘‘,$res); 62 print_r($res); 63 $arr2=[‘name‘=>‘Li‘]; 64 $res2=‘‘; 65 getMutilArrKeysAndValues($arr2,‘‘,$res2); 66 print("\n"); 67 print ($res2);
原文:https://www.cnblogs.com/indifferent/p/14402619.html