相关文章推荐

最近遇到一个面试题循环多维数组,最后按规定格式输出。面试的时候写得有点瑕疵,回来后自己上机跑了下。巩固递归算法,顺便再透彻的理解static 关键字 随机多维数组如下:

    $arr = [
      'Username' => 'test',
            'data' => [
                    'title' => 'aaa',
                    'list' => [
                            'name' => 'bbb',
                            'time' => '222',
                    'time' => 111111111,
            'tag' => 'abc1234',

规定输出格式如下:

Username=test;data.list.name=bbb;data.list.time=222;data.time=111111111;data.title=aaa;tag=abc1234;

上机代码如下:

    function getKeyString($a,$ar=[]){
             ksort($a);
            if(!is_array($a)) return $a;
            static $arr_key;
			static $str;
            foreach($a as $k => $v) {
                    if(is_array($v)) {
                            $arr_key[] = $k;
                            getKeyString($v, $arr_key);
                    } else {
							if(empty($ar)) {
								$str .=  "$k=$v;";
							} else {
								$prefix = implode('.', $ar);
								$str .= $prefix . '.' . "$k=$v;";
            $arr_len = count($ar);
            unset($ar[$arr_len-1]);
           return $str;
    $s = getKeyString($arr);
    var_dump($s);

使用了static 关键字,当递归函数执行时,str和arr_key的值都没有因函数调用完而丢失。 static的定义:静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。 所以静态变量也提供了一种处理递归函数的方法。

  •  
    推荐文章