请选择 进入手机版 | 继续访问电脑版
切换皮肤
这篇文章主要向大家介绍php算法 php算法,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
  • 一、首先来画个菱形玩玩,不少人学C时在书上都画过,我们用PHP画下,画了一半。
思路:多少行for一次,而后在里面空格和星号for一次。php


<?php
for ( $i =0; $i <=3; $i ++){
   echo  str_repeat ( " " ,3- $i );
   echo  str_repeat ( "*" , $i *2+1);
   echo  '<br/>' ;
}

二、冒泡排序,C里基础算法,从小到大对一组数排序。html
思路:这题从小到大,第一轮排最小,第二轮排第二小,第三轮排第三小,依次类推……算法
  1. <?php
  2. $arr  =  array (1,3,5,32,756,2,6);
  3. $len  =  count ( $arr );
  4. for  ( $i =0; $i < $len -1; $i ++){
  5.    for  ( $j = $i +1; $j < $len ; $j ++){
  6.      if ( $arr [ $i ]> $arr [ $j ]){ //从小到大
  7.        $p  =  $arr [ $i ];
  8.        $arr [ $i ] =  $arr [ $j ];
  9.        $arr [ $j ]=  $p ;
  10.      }
  11.    }
  12. }
  13. var_dump( $arr );
复制代码

三、杨辉三角,用PHP写。shell

思路:每一行的第一位和最后一位是1,没有变化,中间是前排一位与左边一排的和,这种算法是用一个二维数组保存,
另外有种算法用一维数组也能够实现,一行 一行的输出,有兴趣去写着玩下。
数组

1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5  10  10   5   1工具

  1. <?php
  2. //每行的第一个和最后一个都为1,写了6行
  3.   for ( $i =0;  $i <6;  $i ++) {
  4.    $a [ $i ][0]=1;
  5.    $a [ $i ][ $i ]=1;
  6.   }
  7. //出除了第一位和最后一位的值,保存在数组中
  8.   for ( $i =2;  $i <6;  $i ++) {
  9.    for ( $j =1;  $j < $i ;  $j ++) {
  10.     $a [ $i ][ $j ] =  $a [ $i -1][ $j -1]+ $a [ $i -1][ $j ];
  11.    }
  12.   }
  13. //打印
  14.   for ( $i =0;  $i <6;  $i ++){
  15.    for ( $j =0;  $j <= $i ;  $j ++) {
  16.    echo  $a [ $i ][ $j ]. ' ' ;
  17.    }
  18.    echo  '<br/>' ;
  19.   }
复制代码
四、在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。post

思路:找到比要插入数大的那个位置,替换,而后把后面的数后移一位。测试
  1. <?php
  2. $in  = 2;
  3. $arr  =  array (1,1,1,3,5,7);
  4. $n  =  count ( $arr );
  5. //若是要插入的数已经最大,直接打印
  6. if ( $arr [ $n -1] <  $in ) {
  7.    $arr [ $n +1] =  $in ; print_r( $arr );
  8.    }
  9. for ( $i =0;  $i < $n ;  $i ++) {
  10. //找出要插入的位置
  11.    if ( $arr [ $i ] >=  $in ){
  12.      $t1 =  $arr [ $i ];
  13.      $arr [ $i ] =  $in ;
  14. //把后面的数据后移一位
  15.      for ( $j = $i +1;  $j < $n +1;  $j ++) {
  16.        $t2  =  $arr [ $j ];
  17.        $arr [ $j ] =  $t1 ;
  18.        $t1  =  $t2 ;
  19.    }
  20. //打印
  21.    print_r( $arr );
  22.    die ;
  23.    }
  24. }
复制代码
五、对一组数进行排序(快速排序算法)。ui

思路:经过一趟排序分红两部分,而后递归对这两部分排序,最后合并。url


  1. <?php
  2. function  q( $array ) {
  3.    if  ( count ( $array ) <= 1) { return  $array ;}
  4. //以$key为界,分红两个子数组
  5.    $key  =  $array [0];
  6.    $l  =  array ();
  7.    $r  =  array ();
  8. //分别进行递归排序,而后合成一个数组
  9.    for  ( $i =1;  $i < count ( $array );  $i ++) {
  10.    if  ( $array [ $i ] <=  $key ) {  $l [] =  $array [ $i ]; }
  11.    else  {  $r [] =  $array [ $i ]; }
  12.   }
  13.    $l  = q( $l );
  14.    $r  = q( $r );
  15.    return  array_merge ( $l ,  array ( $key ),  $r );
  16. }
  17. $arr  =  array (1,2,44,3,4,33);
  18. print_r( q( $arr ) );
复制代码
六、在一个数组查找你所需元素(二分查找算法)。

思路:以数组中某个值为界,再递归进行查找,直到结束。

  1. <?php
  2. function  find( $array ,  $low ,  $high ,  $k ){
  3.    if  ( $low  <=  $high ){
  4.    $mid  =  intval (( $low + $high )/2);
  5.      if  ( $array [ $mid ] ==  $k ){
  6.      return  $mid ;
  7.    } elseif  ( $k  <  $array [ $mid ]){
  8.      return  find( $array ,  $low ,  $mid -1,  $k );
  9.      } else {
  10.      return  find( $array ,  $mid +1,  $high ,  $k );
  11.      }
  12.    }
  13.    die ( 'Not have...' );
  14. }
  15. //test
  16. $array  =  array (2,4,3,5);
  17. $n  =  count ( $array );
  18. $r  = find( $array ,0, $n ,5)
复制代码
七、合并多个数组,不用array_merge(),题目来于论坛。

思路:遍历每一个数组,从新组成一个新数组。

  1. <?php
  2. function  t(){
  3.    $c  = func_num_args()-1;
  4.    $a  = func_get_args();
  5.    //print_r($a);
  6.    for ( $i =0;  $i <= $c ;  $i ++){
  7.      if ( is_array ( $a [ $i ])){
  8.        for ( $j =0;  $j < count ( $a [ $i ]);  $j ++){
  9.          $r [] =  $a [ $i ][ $j ];
  10.        }
  11.      }  else  {
  12.        die ( 'Not a array!' );
  13.      }
  14.    }
  15.    return  $r ;
  16. }
  17. //test
  18. print_r(t(range(1,4),range(1,4),range(1,4)));
  19. echo  '<br/>' ;
  20. $a  =  array_merge (range(1,4),range(1,4),range(1,4));
  21. print_r( $a );
复制代码
八、牛年求牛:有一母牛,到4岁可生育,每一年一头,所生均是同样的母牛,到15岁绝育,再也不能生,20岁死亡,问n年后有多少头牛。(来自论坛)
  1. <?php
  2. function  t( $n ) {
  3.      static  $num  = 1
  4.      for ( $j =1;  $j <= $n ;  $j ++){
  5.          if ( $j >=4 &&  $j <15) { $num ++;t( $n - $j );}
  6.          if ( $j ==20){ $num --;}
  7.       }
  8.       return  $num ;
  9. }
  10. //test
  11. echo  t(8);
复制代码
====================其余算法=========================

冒泡排序 (bubble sort) — O(n2)

  1. $data  =  array (3,5,9,32,2,1,2,1,8,5);
  2. dump( $data );
  3. BubbleSort( $data );
  4. dump( $data );
  5. function  BubbleSort(&  $arr )
  6. {
  7. $limit  =  count ( $arr );
  8. for ( $i =1;  $i < $limit ;  $i ++)
  9. {
  10.    for ( $p = $limit -1;  $p >= $i ;  $p --)
  11.    {
  12.    if ( $arr [ $p -1] >  $arr [ $p ])
  13.    {
  14.     $temp  =  $arr [ $p -1];
  15.     $arr [ $p -1] =  $arr [ $p ];
  16.     $arr [ $p ] =  $temp ;
  17.    }
  18.    }
  19. }
  20. }
  21. function  dump(  $d  )
  22. {
  23. echo  '<pre>' ;
  24. print_r( $d );
  25. echo  '</pre>' ;
  26. }
复制代码


插入排序   (insertion sort)— O(n2)


  1. $data  =  array (6,13,21,99,18,2,25,33,19,84);
  2. $nums  =  count ( $data )-1;
  3. dump(  $data  );
  4. InsertionSort( $data , $nums );
  5. dump(  $data  );
  6. function  InsertionSort(&  $arr , $n  )
  7. {
  8. for (  $i =1;  $i <= $n ;  $i ++ )
  9. {
  10.    $tmp  =  $arr [ $i ];
  11.    for (  $j  =  $i ;  $j >0 &&  $arr [ $j -1]> $tmp ;  $j -- )
  12.    {
  13.    $arr [ $j ] =  $arr [ $j -1];
  14.    }
  15.    $arr [ $j ] =  $tmp ;
  16. }
  17. }
  18. function  dump(  $d  )
  19. {
  20. echo  '<pre>' ;print_r( $d ); echo  '</pre>' ;
复制代码


希 尔排序   (shell sort)— O(n log n)
  1. $data  =  array (6,13,21,99,18,2,25,33,19,84);
  2. $nums  =  count ( $data );
  3. dump(  $data  );
  4. ShellSort( $data , $nums );
  5. dump(  $data  );
  6. function  ShellSort(&  $arr , $n  )
  7. {
  8. for (  $increment  =  intval ( $n /2);  $increment  > 0;  $increment  =  intval ( $increment /2) )
  9. {
  10.    for (  $i = $increment ;  $i < $n ;  $i ++ )
  11.    {
  12.    $tmp  =  $arr [ $i ];
  13.    for (  $j  =  $i ;  $j >=  $increment ;  $j  -=  $increment  )
  14.     if (  $tmp  <  $arr [  $j - $increment  ] )
  15.     $arr [ $j ] =  $arr [ $j - $increment ];
  16.     else
  17.     break ;
  18.    $arr [ $j ] =  $tmp ;
  19.    }
  20. }
  21. }
  22. function  dump(  $d  )
  23. {
  24. echo  '<pre>' ;print_r( $d ); echo  '</pre>' ;
  25. }
复制代码
快 速排序   (quicksort)— O(n log n)


  1. $data  =  array (6,13,21,99,18,2,25,33,19,84);
  2. dump( $data );
  3. quicks( $data ,0, count ( $data )-1);
  4. dump( $data );
  5. function  dump(  $data ){
  6. echo  '<pre>' ;print_r( $data ); echo  '</pre>' ;
  7. }
  8. function  QuickSort(&  $arr , $left , $right )
  9. {
  10. $l  =  $left ;
  11. $r  =  $right ;
  12. $pivot  =  intval (( $r + $l )/2);
  13. $p  =  $arr [ $pivot ];
  14. do
  15. {
  16.    while (( $arr [ $l ] <  $p ) && ( $l  <  $right ))
  17.    $l ++;
  18.    while (( $arr [ $r ] >  $p ) && ( $r  >  $left ))
  19.    $r --;
  20.    if ( $l  <=  $r )
  21.    {
  22.    $temp  =  $arr [ $l ];
  23.    $arr [ $l ] =  $arr [ $r ];
  24.    $arr [ $r ] =  $temp ;
  25.    $l ++;
  26.    $r --;
  27.    }
  28. }
  29. while ( $l  <=  $r );
  30. if ( $left  <  $r )
  31.    QuickSort(& $arr , $left , $r );
  32. if ( $l  <  $right )
  33.    QuickSort(& $arr , $l , $right );
  34. }
复制代码


=================================================

冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边。对整列数两两交换一次,最小的数在最左边,每次都能得一个在剩下的数中的最小 的数,“冒”出来的数组成一个有序区间,剩下的值组成一无序区间,且有序区间中每一元素值都比无序区间的小。

快速排序:基准数,左右二个数组,递归调用,合并。

插入排序:排序区间分红二部分,左边有序,右边无序,从右区间取 第一个元素插入左区间,若此元素比左边区间最右边的元素大,留在原处,若此元素比左 边区间最右边的元素小,则插在最右边元素的原位置,同时最右边元素右移一位,计算器减一,从新和前面的元素比较,直到前面的元素比要插入元素小为止,重复 上述步骤。

注意区间端点值的处理,及数组的第一个元素下标为0.

  1. <?php
  2. //PHP经常使用排序算法
  3. function  bubblesort ( $array )
  4. {
  5. $n  =  count  ( $array );
  6. for  ( $i  = 0;  $i  <  $n ;  $i ++)
  7. {
  8. for  ( $j  =  $n  - 2;  $j  >=  $i ;  $j --)  //[0,i-1] [i,n-1]
  9. {
  10. if  ( $array [ $j ] >  $array [ $j  + 1])
  11. {
  12. $temp  =  $array [ $j ];
  13. $array [ $j ] =  $array [ $j  + 1];
  14. $array  [ $j  + 1] =  $temp ;
  15. }
  16. }
  17. }
  18. return  $array ;
  19. }
  20. $array  =  array  (3,6,1,5,9,0,4,6,11);
  21. print_r (bubblesort ( $array ));
  22. echo  '<hr>' ;
  23. function  quicksort ( $array )
  24. {
  25. $n  =  count  ( $array );
  26. if  ( $n  <= 1)
  27. {
  28. return  $array ;
  29. }
  30. $key  =  $array [ '0' ];
  31. $array_r  =  array  ();
  32. $array_l  =  array  ();
  33. for  ( $i  = 1;  $i  <  $n ;  $i ++)
  34. {
  35. if  ( $array [ $i ] >  $key )
  36. {
  37. $array_r [] =  $array [ $i ];
  38. }
  39. else
  40. {
  41. $array_l [] =  $array [ $i ];
  42. }
  43. }
  44. $array_r  = quicksort ( $array_r );
  45. $array_l  = quicksort ( $array_l );
  46. $array  =  array_merge  ( $array_l ,  array ( $key ),  $array_r );
  47. return  $array ;
  48. }
  49. print_r (quicksort ( $array ));
  50. echo  '<hr>' ;
  51. function  insertsort ( $array )
  52. {
  53. $n  =  count  ( $array );
  54. for  ( $i  = 1;  $i  <  $n ;  $i ++)  //[0,i-1] [i,n]
  55. {
  56. $j  =  $i  - 1;
  57. $temp  =  $array [ $i ];
  58. while  ( $array [ $j ] >  $temp )
  59. {
  60. $array [ $j  + 1] =  $array [ $j ];
  61. $array [ $j ] =  $temp ;
  62. $j --;
  63. }
  64. }
  65. return  $array ;
  66. }
  67. print_r (insertsort ( $array ));
  68. ?>
复制代码


=======================================
  1. <?php
  2. /*
  3. 【插 入排序(一维数组)】
  4. 【基本思想】:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素 所有插入完为止。
  5. 【示例】:
  6. [初始关键字] [49] 38 65 97 76 13 27 49
  7. J=2(38) [38 49] 65 97 76 13 27 49
  8. J=3(65) [38 49 65] 97 76 13 27 49
  9. J=4(97) [38 49 65 97] 76 13 27 49
  10. J=5(76) [38 49 65 76 97] 13 27 49
  11. J=6(13) [13 38 49 65 76 97] 27 49
  12. J=7(27) [13 27 38 49 65 76 97] 49
  13. J=8(49) [13 27 38 49 49 65 76 97]
  14. */
  15. function  insert_sort( $arr ){
  16. $count  =  count ( $arr );
  17. for ( $i =1;  $i < $count ;  $i ++){
  18.    $tmp  =  $arr [ $i ];
  19.    $j  =  $i  - 1;
  20.    while ( $arr [ $j ] >  $tmp ){
  21.     $arr [ $j +1] =  $arr [ $j ];
  22.     $arr [ $j ] =  $tmp ;
  23.     $j --;
  24.    }
  25. }
  26. return  $arr ;
  27. }
  28. /*
  29. 【选择排序(一维数组)】
  30. 【基 本思想】:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到所有待排序的数据元素排完。
  31. 【示例】:
  32. [初 始关键字] [49 38 65 97 76 13 27 49]
  33. 第一趟排序后 13 [38 65 97 76 49 27 49]
  34. 第 二趟排序后 13 27 [65 97 76 49 38 49]
  35. 第三趟排序后 13 27 38 [97 76 49 65 49]
  36. 第 四趟排序后 13 27 38 49 [49 97 65 76]
  37. 第五趟排序后 13 27 38 49 49 [97 97 76]
  38. 第 六趟排序后 13 27 38 49 49 76 [76 97]
  39. 第七趟排序后 13 27 38 49 49 76 76 [ 97]
  40. 最 后排序结果 13 27 38 49 49 76 76 97
  41. */
  42. function  select_sort( $arr ){
  43. $count  =  count ( $arr );
  44. for ( $i =0;  $i < $count ;  $i ++){
  45.    $k  =  $i ;
  46.    for ( $j = $i +1;  $j < $count ;  $j ++){
  47.      if  ( $arr [ $k ] >  $arr [ $j ])
  48.        $k  =  $j ;
  49. }
  50.    if ( $k  !=  $i ){
  51.      $tmp  =  $arr [ $i ];
  52.      $arr [ $i ] =  $arr [ $k ];
  53.      $arr [ $k ] =  $tmp ;
  54.    }
  55. }
  56. return  $arr ;
  57. }
  58. /*
  59. 【冒泡排序(一维数组) 】
  60. 【基本思想】:两两比较待排序数据元素的大小,发现两个数据元素的次序 相反时即进行交换,直到没有反序的数据元素为止。
  61. 【排序过程】:设想被排序的数组R[1..N]垂直竖立,将每一个数据元素看做有重量的气泡,根据 轻气泡不能在重气泡之下的原则,
  62. 从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是 轻者在上,重者在下为止。
  63. 【示例】:
  64. 49 13 13 13 13 13 13 13
  65. 38 49 27 27 27 27 27 27
  66. 65 38 49 38 38 38 38 38
  67. 97 65 38 49 49 49 49 49
  68. 76 97 65 49 49 49 49 49
  69. 13 76 97 65 65 65 65 65
  70. 27 27 76 97 76 76 76 76
  71. 49 49 49 76 97 97 97 97
  72. */
  73. function  bubble_sort( $array ){
  74. $count  =  count ( $array );
  75. if  ( $count  <= 0)  return  false;
  76. for ( $i =0;  $i < $count ;  $i ++){
  77.    for ( $j = $count -1;  $j > $i ;  $j --){
  78.     if  ( $array [ $j ] <  $array [ $j -1]){
  79.      $tmp  =  $array [ $j ];
  80.      $array [ $j ] =  $array [ $j -1];
  81.      $array [ $j -1] =  $tmp ;
  82.     }
  83.    }
  84. }
  85. return  $array ;
  86. }
  87. /*
  88. 【快速排序(一 维数组)】
  89. 【基本思想】:在当前无序区R[1..H]中任取一个数据元素做为比较的"基准"(不妨记为X),
  90. 用此基准将当前无序区划分为 左右两个较小的无序区:R[1..I-1]和R[I 1..H],且左边的无序子区中数据元素均小于等于基准元素,
  91. 右边的无序子区中数据元素均大 于等于基准元素,而基准X则位于最终排序的位置上,即R[1..I-1]≤X.Key≤R[I 1..H](1≤I≤H),
  92. 当R[1..I-1] 和R[I 1..H]均非空时,分别对它们进行上述的划分过程,直至全部无序子区中的数据元素均已排序为止。
  93. 【示例】:
  94. 初始关键字 [49 38 65 97 76 13 27 49]
  95. 第一次交换后 [27 38 65 97 76 13 49 49]
  96. 第二次交换后 [27 38 49 97 76 13 65 49]
  97. J向左扫描,位置不变,第三次交换后 [27 38 13 97 76 49 65 49]
  98. I向右扫描,位置不变,第四次交换后 [27 38 13 49 76 97 65 49]
  99. J向左扫描 [27 38 13 49 76 97 65 49]
  100. (一次划分过程)
  101. 初始关键字 [49 38 65 97 76 13 27 49]
  102. 一趟排序以后 [27 38 13] 49 [76 97 65 49]
  103. 二趟排序以后 [13] 27 [38] 49 [49 65]76 [97]
  104. 三趟排序以后 13 27 38 49 49 [65]76 97
  105. 最后的排序结果 13 27 38 49 49 65 76 97
  106. 各趟排序以后的状态
  107. */
  108. function  quick_sort( $array ){
  109. if  ( count ( $array ) <= 1)  return  $array ;
  110. $key  =  $array [0];
  111. $left_arr  =  array ();
  112. $right_arr  =  array ();
  113. for  ( $i =1;  $i < count ( $array );  $i ++){
  114.    if  ( $array [ $i ] <=  $key )
  115.     $left_arr [] =  $array [ $i ];
  116.    else
  117.     $right_arr [] =  $array [ $i ];
  118. }
  119. $left_arr  = quick_sort( $left_arr );
  120. $right_arr  = quick_sort( $right_arr );
  121. return  array_merge ( $left_arr ,  array ( $key ),  $right_arr );
  122. }
  123. /*打印数组所有内容*/
  124. function  display_arr( $array ){
  125. $len  =  count ( $array );
  126. for ( $i  = 0;  $i < $len ;  $i ++){
  127.    echo  $array [ $i ]. ' ' ;
  128. }
  129. echo  '<br />' ;
  130. }
  131. /*
  132. 几种排序算法的比较和选择
  133. 1. 选取排序方法须要考虑的因素:
  134. (1) 待排序的元素数目n;
  135. (2) 元素自己信息量的大小;
  136. (3) 关键字的结构及其分布状况;
  137. (4) 语言工具的条件,辅助空间的大小等。
  138. 2. 小结:
  139. (1) 若n较小(n <= 50),则能够采用直接插入排序或直接选择排序。因为直接插入排序所需的记录移动操做较直接选择排序多,于是当记录自己信息量较大时,用直接选择排序较 好。
  140. (2) 若文件的初始状态已按关键字基本有序,则选用直接插入或冒泡排序为宜。
  141. (3) 若n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序。 快速排序是目前基于比较的内部排序法中被认为是最好的方法。
  142. (4) 在基于比较排序方法中,每次比较两个关键字的大小以后,仅仅出现两种可能的转移,所以能够用一棵二叉树来描述比较断定过程,由此能够证实:当文件的n个关 键字随机分布时,任何借助于"比较"的排序算法,至少须要O(nlog2n)的时间。
  143. (5) 当记录自己信息量较大时,为避免耗费大量时间移动记录,能够用链表做为存储结构。
  144. */
  145. /*排序测试*/
  146. $a  =  array ( '12' , '4' , '16' , '8' , '13' , '20' , '5' , '32' );
  147. echo  'The result of insert sort:' ;
  148. $insert_a  = insert_sort( $a );
  149. display_arr( $insert_a );
  150. echo  'The result of select sort:' ;
  151. $select_a  = select_sort( $a );
  152. display_arr( $select_a );
  153. echo  'The result of bubble sort:' ;
  154. $bubble_a  = bubble_sort( $a );
  155. display_arr( $bubble_a );
  156. echo  'The result of bubble sort:' ;
  157. $quick_a  = quick_sort( $a );
  158. display_arr( $quick_a );
  159. ?>
复制代码
?




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
  * 排列组合
  * 采用二进制方法进行组合的选择,如表示5选3时,只需有3位为1就能够了,因此可获得的组合是 01101 11100 00111 10011 01110等10种组合
  *
  * @param 须要排列的数组 $arr
  * @param 最小个数 $min_size
  * @return 知足条件的新数组组合
  */
function  pl( $arr , $size =5) {
  $len  =  count ( $arr );
  $max  = pow(2, $len );
  $min  = pow(2, $size )-1;
  $r_arr  =  array ();
  for  ( $i = $min ;  $i < $max ;  $i ++){
   $count  = 0;
   $t_arr  =  array ();
   for  ( $j =0;  $j < $len ;  $j ++){
   $a  = pow(2,  $j );
   $t  =  $i & $a ;
   if ( $t  ==  $a ){
    $t_arr [] =  $arr [ $j ];
    $count ++;
   }
   }
   if ( $count  ==  $size ){
   $r_arr [] =  $t_arr ;
   }
  }
  return  $r_arr ;
  }
$pl  = pl( array (1,2,3,4,5,6,7),5);
var_dump( $pl );
//递归算法
//阶乘
function  f( $n ){
   if ( $n  == 1 ||  $n  == 0){
     return  1;
   } else {
     return  $n *f( $n -1);
   }
}
echo  f(5);
//遍历目录
function  iteral( $path ){
   $filearr  =  array ();
   foreach  ( glob ( $path . '\*' )  as  $file ){
     if ( is_dir ( $file )){
       $filearr  =  array_merge ( $filearr ,iteral( $file ));
     } else {
       $filearr [] =  $file ;
     }
   }
   return  $filearr ;
}
var_dump(iteral( 'd:\www\test' ));




来源: http://www.cnblogs.com/wuwenshuai/p/6636816.html

















回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    Archiver|手机版|小黑屋|齐聚无忧 |网站地图

    Powered by Discuz! X3.4  © 2001-2013 Comsenz Inc.