算法应用场景 - 将一个多维数组拼接成一段字符串

$data = [
    "name" => "hopher",
    "age" => "25",
    "extends" => [
        "mail" => "10000@qq.com",
        "phone" => "10086"
    ]
];

将一个多维数组(示例如上), 现需要将数组中所有的键key和值value, 拼接成一段字符串,输出拼接后字符串的MD5值

具体逻辑细节如下:

  1. 数组中所有的字段和值, 按照 key1=value1;key2=value2...的格式拼接为字符串, 并计算拼接后字符串MD5值。
  2. 要求所有的key为小写, 并且按照字母升序排序
  3. 多维数组则以 . 拼接 key 的值, 例如: $a['abc']['def'] , 则生成 abc.def = test
  4. 例如上述数组,最终生成的字符串为:data.age=25;data.extends.mail=10000@qq.com;data.extends.phone=10086;data.name=hopher;

另外,请说明这个小算法的应用场景是什么? (不限开发语言,麻烦说下应用场景)

阅读 3.7k
1 个回答

要讲算法的话就是函数循环调用,很多地方会用到类似的操作,比如:获取目录下的所有文件(包括子目录内的文件)。

<?php
$data = [
    "name" => "hopher",
    "age" => "25",
    "extends" => [
        "mail" => "10000@qq.com",
        "phone" => "10086"
    ]
];


function arr2str($data,$tempk){
    $str='';
    ksort($data);
    foreach($data as $key => $val){
        $key = strtolower($key);
        if(is_array($val)){
            $child = arr2str($val,"$tempk.$key");
            $str .= $child;
        }else{
            $str.= "$tempk.$key=$val;";
        }
    }
    return $str;
}

$str = arr2str($data,'data');
echo $str."\r\n".md5($str);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题