php查看数组维度的函数

    |     2017年4月17日   |   学习偶记   |     评论已关闭   |    3933

这是一个返回数组维度的函数,主要是通过这个函数讲解一下递归和参数引用。

这个变量,使用函数判断维度的时候,第一次运行,$al 的值是{}空值。

然后进入aL函数,放入3个参数,1、数组$a 2、数组$al的变量引用 3、当前的维度

然后aL函数运行,判断$a是一个数组,这时$level + 1,并且将$level的值1放入数组$al,$al的值为{0,1}

将原始数组$a循环:

第一层第一次循环得到的$v值是:array(“a”,array(“b”,”c”))

然后递归运行aL函数,这时放入的3个参数值是:1、数组是$v 2、数组$al的值1【即引用的变量目前的值】 3、$level的值 1

第二层循环得到的结果是 $level +1  = 2,$al的值为$al{0,1,2}。然后循环数组$v{值=array(“a”,array(“b”,”c”))},递归执行aL函数。

这次执行aL函数的3个参数值是:$v= array(“b”,”c”) ,$al={0,1,2},$level=2 结果是:$level +1  = 3,$al的值为$al{0,1,2,3},这时递归aL函数,因为$v中没有数组,则跳出递归,进行初始数组的第二个值的循环。

第一层第二次循环得到的$v值是:”d”,函数aL运行后,所有变量的值并未变化。包括level和al的值都没有变。

第一层第三次循环得到的$v值是:array(“e”,”f”,array(“g”,”h”),其余两个参数的值 $al={0,1,2},这时$level = 2。因为在递归函数中,变量的变化类似剥洋葱一样,不过从里往外。。

下面是一个例子:

 

  上面的例子非常简单,以a<10$a赋给result[];result的引用传入函数,会将每一次递归产生的aresult。因而本例生成的$result数组是 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 ) 。

本例比较有意思的是echo a123456789101098765432echo $a前就进行了下一次的函数递归。真正执行echo $aa<10条件不满足的时候,echo $a,result,对于上一层而言,执行完递归函数,开始执行本层的echo $a,依次类推。 

以上例子摘自互联网。我们了解了以上知识后,可以改造一下计算数组维度的函数:

改造后的统计数组维度的函数

 

噢!评论已关闭。