• 递归方法 练习编写


    需求:

    给定一个多维数组,现在需要将数组中所有的键值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);
    
     ?>
  • 相关阅读:
    优化Hibernate所鼓励的7大措施:
    Java未赋值变量的默认初始值
    年轻代
    JVM介绍
    Java锁的种类以及辨析
    java语言复制数组的四种方法
    static和final
    抽象函数抽象类
    try catch finally
    九大内置对象
  • 原文地址:https://www.cnblogs.com/fangdada/p/14817564.html
Copyright © 2020-2023  润新知