《PHP动态网页设计》试题库(二)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《PHP动态网页设计》试题库(二)

1.什么是静态变量?

如果一个函数内定义的变量前使用关键字static来声明,那么该变量就是静态变量。

一般函数内的变量在函数调用结束后,其存储的数据将被清除,所占的内存空间也被释放。而使用静态变量时,

该变量会在函数第一次被调用时被初始化,初始化后该变量也不会被清除,当再次调用该函数时,这个静态变量

不再被初始化,而能保存上次函数执行完后的值。可以说静态变量在所有对该函数的调用之间共享。

2.php中函数传递参数的方式有哪些?两者有什么区别?

按值传递和按地址传递(或按引用传递)

(1)按值传递:待传递的变量,与传递给函数之后的变量是存储在不同的空间中。所以函数体内对

该变量值做的修改,不影响原本的变量值。

(2)按地址传递:使用&符号,表明该参数是以地址的方式传递值。并不会将主程序中的指定数值或目标变量传递给函数,

而是把该数值或变量的内存储存区块地址导入函数之中,所以函数体内的该变量和主程序中的该变量在内存

中是同一个。函数体做的修改,直接影响到函数体外部的该变量的值。

3.什么是递归函数?如何进行递归调用?

递归函数其实就是调用自身的函数,但是必须满足以下两个条件:

1)在每一次调用自身时,必须是更接近于最终结果;

2)必须有一个确定的递归终止条件,不会造成死循环。

举例说明:

在实际工作中往往会在遍历文件夹的时候使用。

如果有个例子是希望获取到目录windows下所有的文件,那么先遍历windows目录,如果发现其中还有文件夹,那么就会调用自身,继续往下寻找,依次类推,直到遍历到再也没有文件夹为止,这也就是意味着遍历出来了所有的文件。

4.判断一个函数是否存在?

function_exists(string$function_name)如果存在,返回true,不存在则返回false。

5.func()和@func()之间有什么区别?

第二个函数调用失败不会报错,第一个会报错

6.include()和require()函数的用法和区别是什么?include_once()和require_once()呢?

include和require出现错误后的错误级别不一样

include_once()和require_once()在加载之前要判断是否已经导入

7.说出前置++和后置++的区别?

前置++是先将变量增加1,然后在将值赋值给原来的变量;

后置++是先返回变量的当前值,然后再将变量的当前值增加1.

8.字符串运算符“.”与算术运算符“+”有什么区别?

当“a”“b”之间使用.时认为是连字符。如果两者间是+的时候php会认为是一次运算。

1)如果+号两边的字符串是数字组成的,那么会将字符串自动转为整型;

2)如果+号两边是纯粹的字母,那么会输出0;

3)如果+号两边的字符串是以数字开头的,那么会截取字符串开头的数字,然后进行运算。

9.什么是三目(或三元)运算符?

根据一个表达式的结果在另两个表达式中选择一个。

例如:($a==true)?'good':'bad';

10.控制流程语句有哪些?

1:三种程序结构顺序结构、分支结构、循环结构

2:分支:if/esle/esleif/switch/case/default

3:switch需要注意的:

case子句中的常量可以是整型、字符串型常量、或者常量表达式,不允许是变量。

同一个switch子句中,case的值不能相同,否则只能取到首次出现case中的值。

4:循环for while do...while

do...while后面必须加入分号结尾。

while和do...while的区别

5:break和continue的区别。

break可以终止循环。

continue没有break强大,只能终止本次循环而进入到下一次循环中。

11.数组的概念是什么?数组根据索引分为哪两种,如何区分?数组的赋值方式有哪两种?

数组是一个可以存储一组或一系列数值的变量(复合型变量)

索引数组(索引值为数字,以0开始)和关联数组(以字符串作为索引值)

数组的赋值方式有哪两种?

数组的声明方式主要有两种。

1.通过array()函数声明数组;

可以通过key=>value的方式分别定义索引和值,也可以不定义数组的索引下标,只给出数组的元素值。

2.直接为数组元素赋值,不需要调用array()函数。例如:

$arr[0]=1;

$arr[1]=2;

特别注意:

数组的下标如果是等价于整数的字符串值(但不能以0开头),则会被当作整数对待。

例如:$array[3]与$array['3']引用的是相同的一个元素,而$array['03']引用的则就是另外的一个元素了。

12.数组如何遍历?

①for循环

②foreach循环,这是最常用的遍历方式。用法如下:foreach($arr as $key=>$value){}

③list each和while配合起来循环

13.foeach数组的时候指针是如何指向的?list()/each()/while()循环数组的时候指针如何指向的呢?

当foreach开始执行的时候,数组内部的指针会自动指向第一个单元。因为foreach 所操作的是指定数组的拷贝,而不是该数组本身。

而each()一个数组后,数组指针将停留在数组中的下一个单元或者碰到数组结尾时停留在最后一个单元。如果要再次使用each()遍历数组,必须要使用reset().

reset()将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。

14.如何计算数组长度(或者说计算数组中所有元素的个数)?字符串怎么取长度?

count()--计算数组中的元素个数。

可以使用count(数组名)或者count(数组名,1),如果有第二个参数,并且是数字1,则表示递归统计数组元素的个数。

如果第二个参数是数字0,则等同于只有一个参数的count()函数。

sizeof()--count()的别名

字符串:strlen()、mb_strlen();

15.数组中相关的常用函数有哪些?

1)count--(sizeof别名)—计算数组中的单元数目或对象中的属性个数例如:int count(mixed$var[,int$mode])$var通常都是数组类型,任何其它类型都只有一个单元。$mode默认值为0.1为开启递归地对数组计数2)in_array(mixed$needle,array$haystack[,bool$strict])—检查数组中是否存在某个值。

如果needle是字符串,则比较是区分大小写的。

如果第三个参数strict的值为TRUE则in_array()函数还会检查needle的类型是否和haystack中的相同。

3)array_merge(array$array1[,array$array2[,array$...]])将一个或多

相关文档
最新文档