zoukankan      html  css  js  c++  java
  • 递归方法 练习编写

    需求:

    给定一个多维数组,现在需要将数组中所有的键值key 和 对应的 value 值拼接成一段字符串,输出拼接后字符串的MD5值,具体细节如下

    1. 数组中的所有的字段和值,按照key1=value1;key2=value2.. 格式进行,拼接成字符串,并计算拼接后字符串的Md5值
    2. 要求所有的key为小写,并按照Key的字母升序拍讯
    3. 多维数组则以拼接key的值,例如 $a['a']['b'] = 'test', 则生成 a.b=test
    4. 例如上诉数组,最终生成的字符串为 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);
    
     ?>
  • 相关阅读:
    娓娓道来c指针 (4)解析c的声明语句
    Snail—UI学习之UITextField
    E
    Qt录音机
    著名的英文搜索引擎
    java中Map,List与Set的差别
    Android图片处理:识别图像方向并显示
    Unity3D中组件事件函数的运行顺序
    Android屏幕density, dip等相关概念总结
    Codeforces Round #257 (Div. 2)
  • 原文地址:https://www.cnblogs.com/fangdada/p/14817564.html
Copyright © 2011-2022 走看看