递归方法 练习编写
需求:
给定一个多维数组,现在需要将数组中所有的键值key 和 对应的 value 值拼接成一段字符串,输出拼接后字符串的MD5值,具体细节如下
- 数组中的所有的字段和值,按照key1=value1;key2=value2.. 格式进行,拼接成字符串,并计算拼接后字符串的Md5值
- 要求所有的key为小写,并按照Key的字母升序拍讯
- 多维数组则以拼接key的值,例如 $a['a']['b'] = 'test', 则生成 a.b=test
- 例如上诉数组,最终生成的字符串为 data.data=2021;data.list.di2=321;data.list.id1=123;data.title=testtitle;name=testname;page=100
其他这是考一个递归函数应用,所以重点就是回调函数如何去写
<?php $array = [ 'Name' => 'testname', 'Data' => [ 'title' => 'testtitle', 'data' => '2021', 'list' => [ 'id1' => '123', 'Di2' => '321' ], ], 'Page' => 100, ]; function arrayDeal($data, $pkey='') { if( !is_array($data) ) { return $data; } foreach ($data as $key => $val) { if( is_array($val) ) { foreach ($val as $k => $v) { $newKey = strtolower($key.'.'.$k); if( is_array($v) ) { $newData = arrayDeal($v, $newKey); foreach ($newData as $kk => $vv) { $data[$kk] = $vv; } } else { $data[$newKey] = $v; } } } else { if( !empty($pkey) ) { $newKey = strtolower($pkey.'.'.$key); } else { $newKey = strtolower($key); } $data[$newKey] = $val; } unset($data[$key]); } return $data; } $newData = arrayDeal($array); ksort($newData); $str = ''; foreach ($newData as $kk => $vv) { $str .= ($kk.'='.$vv.';'); } $str = substr($str, 0, -1); echo md5($str); ?>
分类:
php语言 / php基础技术
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了