首页 > 编程语言 > 详细

PHP提取多维数组的键值

时间:2021-02-15 09:48:24      阅读:25      评论:0      收藏:0      [点我收藏+]
 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);

 

PHP提取多维数组的键值

原文:https://www.cnblogs.com/indifferent/p/14402619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!