Day6:递归、include、数组

一、递归

1、递归函数

(1)递:进去

(2)归:出来

注意:

  (1)你自己就是这个函数,是你自己调用自己,当自己做完现在的一件事情后,你会做上件你没有做完的事

  (2)递归函数一定要有一个条件限制,否则你会陷入死循环

<?php
function test($a){
    echo $a.'<br/>';
    if($a>=1){
        test($a-1);
    }
    echo $a.'<br/>';
}
test(3);//3 2 1 0 0 1 2 3

/**
第一次调用    test(3)
function test($a){
    echo $a.'<br/>';    //3
    if($a>=1){  //成立
        test($a-1); //test(2)
    }
    echo $a.'<br/>';    //这里的东西还没有执行呢,就已经去执行test($a-1)  3
}
第二次调用    test(2)
function test($a){
    echo $a.'<br/>';    //2
    if($a>=1){  //成立
        test($a-1); //test(1)
    }
    echo $a.'<br/>';    //这里的东西还没有执行呢,就已经去执行test($a-1)  2
}
第三次调用    test(1)
function test($a){
    echo $a.'<br/>';    //1
    if($a>=1){  //成立
        test($a-1); //test(0)
    }
    echo $a.'<br/>';    //这里的东西还没有执行呢,就已经去执行test($a-1)  1
}
第四次调用    test(0)
function test($a){
    echo $a.'<br/>';    //0
    if($a>=1){  //不成立
        test($a-1);
    }
    echo $a.'<br/>';    //0
}
**/
?>
递归典型例子
<?php
//1+2+3+4+5
function sum($a){
    if($a>1){
        $a+=sum($a-1);
    }
    return $a;
}
echo sum(5);
/**分析
第一次 sum(5)
function sum($a){   //5
    if($a>1){   //成立
        $a+=sum($a-1);  //$a(5)+=sum(4) 5+=10 15
    }
    return $a;  //15
}
第二次 sum(4)
function sum($a){   //4
    if($a>1){   //成立
        $a+=sum($a-1);  //$a(4)+=sum(3) 4+=6 10
    }
    return $a;  //10
}
第三次 sum(3)
function sum($a){   //3
    if($a>1){   //成立
        $a+=sum($a-1);  //$a(3)+=sum(2) 3+=3 6
    }
    return $a;  //6
}
第四次 sum(2)
function sum($a){   //2
    if($a>1){   //成立
        $a+=sum($a-1);  //$a(2)+=sum(1) 2+=1 3
    }
    return $a;  //3
}
第五次 sum(1)
function sum($a){   //1
    if($a>1){   //不成立
        $a+=sum($a-1);
    }
    return $a;  //开始返回1
}
**/
?>
1+2+3+4+5

2、加载自定义文件(文件加载)

(1)一个项目里面有可能定义了很多函数,有很多个文件要同时用他们,这个时候怎么办

  借助系统指定(将文件包含进来)

    include(‘要包含的文件名’);//就相当于把代码拷贝进来

      注意:

        系统里面有些函数是非函数,他是系统指令,你还可以写成include “”;还有exit()和exit

    include_once:它只包含一次文件,检查如果有就不再进行包含

    建议使用include 因为include_once还要检测,太浪费时间

    require(‘要包含的文件名’);

    require_once(‘要包含的文件名’);

      注意:

        require如果包含错误或者文件不存在,将会产生致命的错误,而include只会给你警告,下面的代码还会继续执行

        如果说少了这个包含的文件,我的程序就运行不下去了,我们就用require,相反使用include

二、数组

1、定义:它是一组数据,可以存多个值

2、数组的分类: 

(1)索引数组:叫座位号

(2)关联数组:叫名字

3、数组的声明(直接声明)

(1)直接声明

  声明索引数组:$arg[0]=1;

  声明关联数组:$arg['name']='licy';

(2)键(key、下标):数组中数据对应的表示,就是我刚才写的0和name

(3)值(value):数组中下标所对应的数据

(4)元素:键和值的组合通常称为一种元素

(5)数组的使用:

  $arg[0]:数组名[下标]

(6)数组的特性

  可以使用中括号来声明操作数组,但也可以使用大括号来声明数组,建议使用[]中括号

  声明数组时可以不加下标,直接写中括号,默认为索引数组,下标从0开始,依次自增

  单独使用中括号,而不指定值时,索引下标为出现过的最大下标的索引加1

  声明数组时, 索引下标可以不连续

  声明数组的下标可以为负数,但是没有太大意义

  如果说下标有重复的情况下,后面的会覆盖前面的(索引和关联数组都是一样的)

  如果说声明关联数组时不加引号来包含下标,将会当做常量来使用

  关联数组和索引数组可以存在一个数组中,但是很不常见

  数组的关联下标不会影响到索引下标的排列规则

4、数组的声明(array)

(1)使用array()语法来声明 $arr=array()声明了一个空数组

  $arr=array(1,2,3,4,5,6)

  $arr=array('name'=>'licy','age'=>13,'sex'=>'男')

(2)注意:

  array()如果不指定下标,默认是索引数组,而且下标从0开始

  array()可以指定下标,使用=>操作符来声明,索引、关联数组都可以

5、数组的声明([]):array的简写方式

(1)使用中括号来直接声明数组$arr=['name'=>'licy','age'=>13,'sex'=>'男']

(2)新版本里有一种新的方式来使用:函数名()[]

6、删除数组元素

(1)unset():直接在内存中释放了

(2)重新设置为null

注意:

  使用unset释放掉数组中的元素后,下标也会删除,但是下标不会重新索引

<?php
header('Content-type:text/html;charset=utf-8');
$arr=array('licy','zhangsan','lisi','wangwu','zhaoliu');
unset($arr[1]);//直接释放掉了,连下标都没有了
//$arr[1]=null;//下标还有,但是值已经设置为NULL
var_dump($arr);
?>
View Code
<?php
header('Content-type:text/html;charset=utf-8');
$arr=array(1,2,3,4,5);
unset($arr[4]);
$arr[]=6;
var_dump($arr);//array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [5]=> int(6) }
?>
View Code

7、多维数组

<?php
header('Content-type:text/html;charset=utf-8');
$dh=array(
    'maoxian'=>array('功夫巨人','熊出没','火影忍者'),
    'gaoxiao'=>array('小虎还乡','喜洋洋','樱桃小丸子'),
);
echo '<pre>';
    var_dump($dh);
echo '</pre>';
?>
View Code

(1)维度:就是在数组里面再放数组,(可以是关联数组,也可以是索引数组)

8、数组的遍历(for):只能是索引数组

(1)通常我们使用数组是使用$arr[0]来进行取值

(2)count():用来获取数组元素的个数

注意:

  数组的下标必须是连续的,最好从0开始

<?php
header('Content-type:text/html;charset=utf-8');
$arr=array('a','b','c','d');
$count=count($arr);
for($i=0;$i<$count;$i++){
    echo $arr[$i];
}
?>
View Code

 

posted @ 2017-09-20 09:58  licy_python  阅读(411)  评论(0编辑  收藏  举报