PHP与Mysql练习题二
更新时间:2024-01-20 22:51:01 阅读量: 教育文库 文档下载
- php与mysql连接推荐度:
- 相关推荐
1)LAMP的含义中,以下哪项是完全正确的? --------------C A)linux+access+mysql+php B)linux+apache+mssql+php C)linux+apache+mysql+php D)linux+access+mssql+php
2)下列哪些是PHP的配置文件? ---------------B A)php.exe B)php.ini C)php_mysql.dll D)php_mysqli.dll 6)PHP中应该如何声明变量? -------------A A)采用$号开头后面跟变量名 B)采用var开头后面跟变量名
C)采用declare开头后面跟变量名 D)直接写出变量名就可以
8)PHP哪个函数能取得字符串长度?-------------C A)strrev B)substr C)strlen D)strchr 9)PHP字符串连接运算符是:------------------B A)+ B). C)&& D)!
10)阅读以下PHP代码,并选择正确的运算结果:--------------B
$inta=100; $inta++; ++$inta; $inta--; --$inta; echo($inta); ?> A) 99 B)100 C)101 D)102
11)阅读以下PHP代码,并选择正确的运算结果:--------------A
A)1 B)3 C)5 D)7
15)? : 运算符相当于以下哪个PHP 语句? --------------A A) if...else B) switch C) for D) break
16)关于PHP中的各种循环,说法正确的是:----------A A)foreach 语句用于循环遍历数组 B)do...while 是先判断再运行循环 C)while 是先循环再判断条件
D)for循环是条件判断型的循环,跟while相似 17) 以下哪些是PHP的会话控制技术?--------------B A)Cookie B)Session C)Application D)Server 18)以下哪些是单词的说法是正确的? ---------D A)insert ---用来修改数据 B)update ---用来删除数据 C)delete ---用来添加数据
D)select ---用来查看数据
19)以下哪个mysql命令可以查看数据表的结构信息? --------------B A)show tables; B)desc表名 C) create table 表名 D) select * from 表名? 20) mysql哪些命令可以用于选择数据库? ------------------C
A) show databases B) use database 数据库名 C) use 数据库名 D) user 数据库名
25) php连接上mysql之后,采用哪个函数配置循环可以得到指定表中的记录? -----------------A A)mysql_fetch_row B) mysql_select_db C)mysql_query D)mysql_connect
26)mysql_query(“set names gb2312”); 该行代码一般要写在哪里最合适?---------------A A)从数据表中返回记录之前 B)从数据表中返回记录中间 C)从数据表中返回记录之后 D)写在哪里也无所谓
27)mysql_free_result($result);本行代码的含义是:-------------C A)断开PHP与mysql数据库的连接 B)重新启动PHP与mysql数据库的连接 C)释放变量resut,以节约服务器资源 D)占用服务器运行进程
28)PHP的mysql_query()函数处理以下哪些指令成功就可以返回查询后的结果集?-----------B A)insert B) select C) delete D)update 29)
阅读以上代码,请问该代码的功能是:-----------------B A)向 sanguo中查看记录 B)向 sanguo中删除记录 C)向 sanguo中添加记录 D)向 sanguo中修改记录
30)php中哪个函数用于读取整个文件?--------------D A) fgetss() B)fgets() C)fread() D)readfile()
31)PHP对目录进行操作时,先用哪个函数对操作目录进行是否存在的判断? ----------------B A)file_exists B)is_dir C)fopen D) fclose
32)在正则表达式当中 [ ]表示的含义正确的是:---------------A A)[ ]中只能匹配一个字符 B)[ ]中可以匹配多个字符
C)[a-c]表示可以匹配a,c两个字母 D)以上说法都正确
34)正则表达式的行尾定位符是: ---------------A A) $ B)@ C)# D)*
35)PHP中声明一个类,用以下关键字来进行声明? -------------------B A)$ B) class C) public D) echo
36)PHP中 最终类应该用哪个关键字进行修饰? A) new B) final C) extends D) 没有最终类
37)php向文本文件写入内容,应该采用哪个文件操作函数?--------------------B A)fclose() B)fwrite() C)fopen() D)file()
38)PHP中类的继承是通过哪个关键字来实现的? -------------------C A)final B) private C)extends D) interface
41)PHP中的 $_GET['参数名'],表示什么含义? -------------A A)接收URL传递过来的参数
B)接收用POST方式发送过来的参数 C)发送参数给其它页面 D)以上说法都不正确
43)正则表达式当中的 \\d 表示的含义为: ------------------B
A)把字母d转义 B)任意一个十进制数字 C) 没有实际含义 D) 换行符 44)mysql 中 auto_increment 单词表示什么含义? ------------B A)主键 B) 自动增长 C) 非空约束 D) 批量导入 45)PHP中的构造函数为: --------------A
A)__construct B)__destruct C)__autoload D)跟类名相同 46)以下哪个关键字用于表示类的析构函数? --------------------B
A)__construct B)__destruct C)__autoload D) 析构函数就是类的别名
47)PHP的文件上传功能,需要在php.ini配置当中,开启哪项功能?-------------B
A) display_errors = on B) file_uploads=on C)short_open_tag = On D) 以上都不正确 49)PHP中检测某文件是否存在的函数为: -------------------B A)class_exists B)file_exists C)is_dir D) get_class
50) PHP如果要实现网站常见的分页功能,mysql中的哪个子句是必不可少的?----------C A)order B) having C) limit D) using
57)PHP中调用类方法的符号是: ---------------B A) && B) -> C) ** D)<-
58)PHP中 类的属性含义正确的是:-----------------A A)类的属性实质就是类中的变量 B)类的属性实质就是类中的方法 C)类的属性实质就是类的子类 D)类的属性实质就是名
59)echo ceil(0.60); 返回值为:---------B A) 6 B) 1 C) 0 D) 0.5
61)关于PHP的switch语句说法正确的有: ------------AB A)break 语句可以没有 B)default 语句可以没有 C)break 语句不可以没有 D)default 语句不可以没有
64)下列哪些属于PHP中的数据类型: ----------------ABCD A) string B) int C) boolean D) object
65)关于 drop 关键字的说法正确的有: ----------------------AB A)drop 可以删除数据库 B)drop 可以删除表
C)drop 可以删除表中的某条数据 D)以上说法都正确
66)PHP的文件上传函数 move_uploads_file 包括哪些属性? ------------------ABCD A)name B) type C)size D)tmp_name 67) 以下哪些操作具有打开的功能?----------------AB A)fopen() B)opendir() C) fclose() D) closedir() 68)PHP中关于类体范围的说法正确的有:--------------AB A)类要用class 关键字声明,后面跟类名 B)类体要用一对{ }括起来 C)类体要用一对( )括起来 D)类体要用一对[ ]括起来
69)关于PHP的if...else 说法正确的有: ---------------BD A) if 语句可以没有 B) else 语句可以没有
C) if 语句后面可以有多个else 语句 D) else 语句里面可以嵌套if
70)正则表达式中,以下哪些可以表示1位整数? --------------------ABC A)[0-9] B) [0123456789] C) \\d{1} D) \\w{1}
71)mysql在安装过程中,以下哪些说法是正确的? --------------ABC A)mysql在安装时默认端口号为 3306 B)mysql在安装时默认字符集为 latin1
C)mysql在安装成功以后,启动mysql 要输入密码
D)mysql在安装成功以后,启动mysql 不需要输入密码
75)PHP的$_POST可以用来取得以下哪些表单数据? ----------ABCD A) text B)password C) radio D)textarea
77)正则表达式 ^f.d$ 可以匹配的单词有: ------------------AB A)fed B)fid C)fabd D)fbcd
80)跟PHP会话控制有关的方法有: ----------------------ABC
A)session_start() B)session_destroy() C) $_SESSION['参数名'] D)setcookie() 84)PHP的字符串型数据,可以用以下哪些符号括起来? -------------ABC A) 一对单引号 B)一对双引号 C)定界符符号 D) 一对**号 85)PHP中包含哪些循环方式?------------------ABCD A)do...while B) while C)for D) foreach
86)以下哪些是PHP变量的命名规则?--------------ABCD A)变量名必须以字母或下划线 \开头。 B)变量名只能包含字母数字字符以及下划线。 C)变量名不能包含空格
D)如果变量名由多个单词组成,那么应该使用下划线进行分隔(比如 $my_string),或者以大写字母开头
87)以下哪些函数可以取得文件中的一行数据内容?-------------------AB A)fgets() B) fgetss() C) fopen() D)fclose()
91)以下哪些是合法的数组形式?---------------------------ABC
A)array('张三','李四'); B)array('a'=>'张三','b'=>'李四') ; C)array('张三','b'=>'李四'); D)new ('张三','李四'); 5)PHP 类中的变量 ,也可以称为: ------------------------AB A)属性 B)数据成员 C) 方法 D)子类
96)PHP连接mysql数据库需要用到的三个参数分别是: (采用的是mysql_connect函数连接)------ABC
A)主机名 B)数据库密码 C) 数据库用户名 D) 连接报错信息
97)PHP中包含两套正则表达式的函数库,分别是哪两个? -------------------AB A)PCRE B)POSIX C)Smarty D)Ajax
98)PHP中跟文件指针操作有关的函数有: --------------ABCD A) feof() B) rewind() C) ftell() D)fseek()
100)以下哪些属于PHP自带的预定义变量? -----------------ABCD A)$_POST B) $_GET C)$_SERVER D)$_SESSION
101)PHP中关于上传文件的说法中正确的有:--------------------AB A)在php.ini配置中 必须要开启 file_uploads=On 功能
B)在上传表单标记中,必须要有 enctype=\属性 C)必须用get方法进行上传 D)以上说法都正确
102)正则表达式中行定位符有: ---------------AB A)^ B) $ C)@ D) !
104)以下哪些属于正则表达式中的预定义字符? ---------------ABC A)? B) + C) * D) /
105)PHP中类的访问修饰符有: --------------ABCD
A)public B)private C)protected D) 以上说法都正确
106)以下的PHP字符串操作函数中,哪两个是互为相反的? -------------------AB A) explode B) implode C)strtoupper D)trim 107)属于cookie 的正确说法有: ------------------AB A)在客户端保存,并不在服务器端保存 B)用来识别不同的用户
C)cookie的数据信息非常可靠 D)客户不能拒绝cookie
109)正则表达式中的 \\w 包含以下哪些含义? ----------------AB
A)任意一个单词字符 B)相当于[a-zA-Z0-9] C)把w转义 D)以上说法都正确 110)PHP中关于类体的说法正确的有: ----------------ABCD A) 类体中主要包括属性和方法的声明和定义 B) 类体中可以只定义属性或只定义方法
C) 类体中可以不定义任何属性和方法,此时称为 空类 D) 以上都正确
111)continue 和 break 语句说法正确的有? -------------------BC
A)continue 语句则是中断循环过程,不再判断执行循环的条件是否成立。 B)break 语句则是中断循环过程,不再判断执行循环的条件是否成立。 C)Continue 语句只是结束本次循环,并不是中断整个循环的执行。
D)break 语句只是结束本次循环,并不是中断整个循环的执行。 112)以下哪些关键字可以操作数据库? --------------------ABC A) create B) drop C) use D)select 113)PHP的注释符号有: -------------------BC A) \\\\注释语句 B) //注释 C) /* 注释语句 */ D) \\* 注释语句 *\\ 114)面向对象的编程方式以下哪些特点? ---------------ABC A)继承 B)封装 C)多态性 D) 以上都不正确
119)以下关于PHP中父类,子类关系的说法正确的有:-------------BC A)PHP中一个父类只能有一个子类 B)PHP中一个子类只能有一个父类 C)PHP中一个父类可以有多个子类 D)PHP中一个子类可以有多个父类 判断:
120) PHP只能跟MySQL数据库进行联合编程--------------错 121) MySQL安装时,默认的字符集是gb2312--------------错
124) PHP中除法运算的结果都为浮点数,即使相除的两个变量都为整数------对 125) PHP的构造函数为 __destruct() ; --------------错 126) PHP的短标记模式为: --------------错
127) continue 语句则是中断循环过程,不再判断执行循环的条件是否成立。----错 128) strtolower该函数的功能是把字符串全转为大写----------错 129) PHP预定义常量要使用define()函数进行定义 ----------对
130) PHP变量名必须以字母或下划线 \开头,不可以用数字开头---------对 131) base64编码中不包括+ 号 ---------------错
132) mysql整数类型中,有符号的比符号的可以保存的数字大 --------------错 133) 接口可以看做是PHP中多继承的解决方案 ------------------对
134) 表单数据中包括隐藏表单,PHP也会接收不到隐藏表单中的数据--------------错 135) implements 用于实现PHP中类的继承-----------------错 136) do?while是先执行后判断,无论表达式的值是否为True,都将执行一次循环---------------对
137) PHP中字符串连接运算符为 = 号------------------错
138) mysql中的limit 关键字可以限制结果集中记录的个数 -------------对 139) 33f 的结果为 0.5 ---------------------------------------错
140) self 是指向父类的指针,主要用于调用父类的构造函数---------------错
141) php中的else语句必须和if语句联合使用,自己不能单独使用 ------------------对
142) 在PHP语句声明的变量,跟在PHP函数中声明的变量即使重名也没关系,因为它们俩个重名变量的作用域不相同----------对
143) smarty 模板的左右边界符号只能定义为 {% %} --------------错 144) PHP默认时间是格林威治时间----------------------对
145) PHP中算术运算符的运算优先级是:先算乘除余,后算加减,有圆括号的要最后算---------错 146) 在PHP实现网站信息翻页功能中,数据库的 order 子句是必须的 ------------错 147) PHP中异或运算符号为: xor --------------对
148) mysql 数据库中的 like 查询结构中,一个下划线代表一个字符 ----------------对 149) left join 关键字表示右外连接 ----------------错
150) PHP中的八进制,就是在一个整数前面加上字母o ------------------错
151) get方式提交的数据,应该用$_POST方式进行接收------------错 152) PHP数组的下标默认从1开始 ----------------错
153) strtoupper 返回的是小写字母,strtolower 返回的是大写字母 -----------错 154) 100==='100' 该表达式返回的值为true --------------错
155) PHP中声明变量要用 $号,后面中变量名进行声明----------------对
156) mysql 交叉连接后生成的记录总数为参与连接的各表记录总和-------------------错 157) PHP中的字符串,单引号,双引号表示的意思是不一样的------------------对 158) SQL的分组语句中,having子句是不能省略的---------------------错
159) 自连接就是一个表与它自身的连接,用来取出表中彼此包含左外连接的记录----------错 160) 在PHP.ini 文件中开启display_errors=on的目的是给网页用户提供错误信息---------错 161) PHP的文件操作函数rewind () 用于把文件位置指针设为文件流的结尾-----------错 162) PHP跟C#.net语言一样,只能运行在windows操作系统平台上 ---------------错 163) --$inta; 该表达式的含义是变量 $inta自身减1以后,再减去1 ------------错 164) float (5,2) 表示最多能显示7位数字,整数为5位,小数为2位 -------------错 165) smarty 当中,assign 方法是用来调用模板的---------------------错
166) PHP中的逻辑运算 与运算有两个运算符号,但功能一样----------------对
167) mysql 中 auto_increment自动增长列的,初始值只能从 1 开始 -------------错 168) trim函数可以用来删除字符串中间包含的空格 ------------------错 169) php中的三重操作符表达式 相当于 while 循环语句 ----------------错
170) php跟mysql进行连接过程中,如果连接失败,应该可以用mysql_error()返回错误信息-------对
171) PHP中的字符串 explode 跟 implode 的功能是互为相反的 -----------------对 172) preg_match( )函数只进行一次匹配,最后返回 0 或者 1 ----------- 对
173) 如果A表有三列字段,B表有两列字段,它们之间是不能进行联合的----------------对 174) html表单发送数据,默认按 post 方式进行发送 ----------------错 175) for 循环 只能用于对数组进行处理---------------------错
176) mysql_query()函数是选择数据库的专用函数-------------------错 177) 使用关键字 final 修饰的类,可以被继承 --------------------错 178) PHP的析构函数是必须要有的-------------------错 179) PHP中的类访问修饰符,默认为public --------------对 180) PHP中的类支持多继承------------------
1. 变量如何定义?如何检查变量是否定义?如何删除一个变量?判断一个变量是否为空的函数? isset() unset() empty()
2. 什么是可变变量? 一个变量的变量名可以动态的设置和使用。 $a = 'hello' , $$a = 'world', ${$a}=hello world 3. 变量赋值方式有哪几种? 1)直接赋值 2)变量间赋值 3)引用赋值
4. 引用和拷贝有什么区别? 拷贝是将原来的变量内容复制下来,拷贝后的变量与原来的变量使用各自的内存,互不干扰。 引用相当于是变量的别名,其实就是用不同的名字访问同一个变量内容。当改变其中一个变量的值时,另一个也跟着发生变化。 5. php中变量有哪些基本数据类型? php支持8种原始数据类型。 包括: 四种标量类型(布尔型boolean,整型interger,浮点型float/double , 字符串string) 两种复合类型(数组array , 对象object) 两种特殊类型(资源resource,NULL)
6. 其它类型转换为boolean类型时,哪些被认为是false? 布尔值false,整型值0, 浮点型值0.0, 空白字符串, 字符串'0', 空数组,特殊数据类型NULL, 没有设定的变量。 empty()函数在哪些情况下返回true? 布尔值false, 整型值0, 浮点型值0.0, 空白字符串, 字符串'0', array()空数组, 特殊数据类型NULL, 没有任何属性的对象, 没有赋值的变量。
7. 如果定义了一个变量$a ,但是没有赋初始值 那么$a==0吗? $a==false吗? $a==''吗? $a==NULL吗? $a===NULL吗? 答:echo=>什么都没有 , var_dump=>NULL empty($b)==true吗?———————————— echo=>1 , var_dump=>bool(true) 此时如果输出$a++是多少?——————— echo=>什么都没有 , var_dump=>NULL 如果输出++$a又是多少?————————— echo=>1 , var_dump=>int(1) 8. 字符串怎么转成整数,有几种方法?怎么实现? 强制类型转换: (整型)字符串变量名; 直接转换:settype(字符串变量,整型); intval(字符串变量);
9. 标量数据和数组的最大区别是什么? 一个标量只能存放一个数据,而数组可以存放多个数据。
10. 常量如何定义? 如何检测一个常量是否被定义?常量的值只能是哪些数据类型? define()//定义常量 , defined()//检查常量是否定义 常量的值只能是标量类型的数据。
11. 常量分为系统内置常量和自定义常量。请说出最常见的几个系统内置常量? __FILE__ , __LINE__ , PHP_OS , PHP_VERSION
12. 如果定义了两个相同的常量,前者和后者哪个起作用? 前者起作用,因为常量一旦定义就不能被重新定义或者取消定义。 13. 常量和变量有哪些区别? 1)常量前没有$符号; 2)常量只能通过define()定义,而不能通过赋值语句定义; 3)常量可以在任何地方定义和访问,而变量有全局和局部之分; 4)常量一旦定义就不能被重新定义或者取消定义,而变量而通过赋值方式重新定义; 5)常量的值只能是标量数据,而变量的数据库类型有8种原始数据类型。 14. PHP中常用的几个预定义的全局数组变量是哪些? 有9大预定义的内置数组变量: $_POST, $_GET, $_REQUEST, $_SESSION, $_COOKIE, $_FILES,$_SERVER, $_ENV, $GLOBALS 15. 在实际开发中,常量最常用于哪些地方? 1)连接数据库的信息定义成常量,如数据库服务器的用户名、密码、数据库名、主机名; 2)将站点的部分路径定义成常量,如web绝对路径,smarty的安装路径,model、view或者controller的文件夹路径; 3)网站的公共信息,如网站名称,网站关键词等信息。 16. 函数的优越性有哪些? 提高程序的可维护性 提高软件的可靠性 提高程序的可重用性 提高程序的开发效率
17. 如何定义一个函数?函数名区分大小写吗? 1)使用 function 关键字; 2)函数命名规则和变量一样,以字母或者下划线开头,而不能以数字开头; 3)函数名不区分大小写; 4)函数名不可以使用已经声明过的或者系统自建的函数名称。 18. 什么是变量的能见度 或者 说是变量作用域? 就是变量在程序中的可作用范围。根据变量的能见度,变量分为局部变量和全局变量。 19. 什么是局部变量和全局变量?函数内是否可以直接调用全局变量? 局部变量是函数内部定义的变量,其作用域是所在的函数。如果函数外还有一个跟局部变量名字一样的变量, 程序会认为它们两个是完全不同的两个变量。当退出函数的时候,其中的局部变量就同时被清除。 全局变量是定义在所有函数以外的变量,其作用域是整个php文件,但是在用户自定义的函数内部是无法使用的。
如果一定要在用户自定义的函数内部使用全局变量,那么就需要使用global关键字声明。 也就是说如果在函数内的变量前加上golbal来修饰,那么函数内部就可以访问到这个全局变量, 不仅可以利用这个全局变量进行运算而且可以对这个全局变量进行重新赋值。 全局变量还可以使用 $GLOBALS['var'] 来调用。
20. global关键词如何使用?预定义的全局变量数组$GLOBALS如何使用? 21. 什么是静态变量? 如果一个函数内定义的变量前使用关键字static来声明,那么该变量就是静态变量。 一般函数内的变量在函数调用结束后,其存储的数据将被清除,所占的内存空间也被释放。而使用静态变量时, 该变量会在函数第一次被调用时被初始化,初始化后该变量也不会被清除,当再次调用该函数时,这个静态变量 不再被初始化,而能保存上次函数执行完后的值。可以说静态变量在所有对该函数的调用之间共享。
22. php中函数传递参数的方式有哪些?两者有什么区别? 按值传递和按地址传递(或按引用传递) (1)按值传递: 待传递的变量,与传递给函数之后的变量是存储在不同的空间中。所以函数体内对
该变量值做的修改,不影响原本的变量值。
(2)按地址传递: 使用 & 符号,表明该参数是以地址的方式传递值。并不会将主程序中的指定数值或目标变量传递给函数,
而是把该数值或变量的内存储存区块地址导入函数之中,所以函数体内的该变量和主程序中的该变量在内存
中是同一个。函数体做的修改,直接影响到函数体外部的该变量的值。 23. 什么是递归函数?如何进行递归调用? 递归函数其实就是调用自身的函数,但是必须满足以下两个条件: 1)在每一次调用自身时,必须是更接近于最终结果; 2)必须有一个确定的递归终止条件,不会造成死循环。 举例说明: 在实际工作中往往会在遍历文件夹的时候使用。 如果有个例子是希望获取到目录windows下所有的文件,那么先遍历windows目录,如果发现其中还有文件夹,那么就会调用自身,继续往下寻找,依次类推, 直到遍历到再也没有文件夹为止,这也就是意味着遍历出来了所有的文件。 24. 判断一个函数是否存在?
function_exists( string $function_name ) 如果存在,返回true, 不存在则返回 false。 25. func()和@func()之间有什么区别? 第二个函数调用失败不会报错,第一个会报错
26. include()和require()函数的用法和区别是什么?include_once()和require_once()呢? include和require出现错误后的错误级别不一样 include_once()和require_once()在加载之前要判断是否已经导入 27. 说出前置++和后置++的区别? 前置++是先将变量增加1,然后在将值赋值给原来的变量; 后置++是先返回变量的当前值,然后再将变量的当前值增加1. 28. 字符串运算符“.”与算术运算符“+”有什么区别? 当“a”“b”之间使用.时认为是连字符。如果两者间是+的时候php会认为是一次运算。 1)如果+号两边的字符串是数字组成的,那么会将字符串自动转为整型; 2)如果+号两边是纯粹的字母,那么会输出0; 3)如果+号两边的字符串是以数字开头的,那么会截取字符串开头的数字,然后进行运
算。
29. 什么是三目(或三元)运算符? 根据一个表达式的结果在另两个表达式中选择一个。 例如: ($a==true) ? 'good':'bad'; 30. 控制流程语句有哪些? 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强大,只能终止本次循环而进入到下一次循环中。 31. 数组的概念是什么?数组根据索引分为哪两种,如何区分?数组的赋值方式有哪两种? 数组是一个可以存储一组或一系列数值的变量(复合型变量) 索引数组(索引值为数字,以0开始)和关联数组(以字符串作为索引值) 数组的赋值方式有哪两种? 数组的声明方式主要有两种。 1.通过array()函数声明数组; 可以通过key=>value的方式分别定义索引和值,也可以不定义数组的索引下标,只给出数组的元素值。 2.直接为数组元素赋值,不需要调用array()函数。例如: $arr[0] = 1; $arr[1] = 2; 特别注意: 数组的下标如果是等价于整数的字符串值(但不能以0开头),则会被当作整数对待。 例如: $array[3] 与 $array['3'] 引用的是相同的一个元素,而 $array['03'] 引用的则就是另外的一个元素了。 32.数组如何遍历? ①for循环 ②foreach循环 ,这是最常用的遍历方式。用法如下:foreach($arr as $key=>$value){} ③list each 和while 配合起来循环
33. foeach数组的时候指针是如何指向的?list()/each()/while()循环数组的时候指针如何指向的呢? 当foreach开始执行的时候,数组内部的指针会自动指向第一个单元。因为foreach所操作的是指定数组的拷贝,而不是该数组本身。 而each()一个数组后,数组指针将停留在数组中的下一个单元或者碰到数组结尾时停留在最后一个单元。如果要再次使用each()遍历数组,必须要使用reset(). reset()将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。
34. 如何计算数组长度(或者说计算数组中所有元素的个数)?字符串怎么取长度? count() -- 计算数组中的元素个数。
可以使用count(数组名)或者count(数组名,1),如果有第二个参数,并且是数字1,则表示递归统计数组元素的个数。 如果第二个参数是数字0,则等同于只有一个参数的count()函数。 sizeof() -- count() 的别名 字符串:strlen()、mb_strlen(); 35. 数组中相关的常用函数有哪些? 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 $... ]] ) 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 特别注意:如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引 4) 数组与字符串之间的转换 (1)explode ( string $separator , string $string [, int $limit ] ) 使用一个分隔字符来分隔一个字符串。 (2)implode ( string $glue , array $arr ) 使用一个连接符将数组中的每个单元连接为一个字符串。 join 为 implode 的别名 5) sort(array &$array [, int $sort_flags ]) — 对数组按照值排序,当本函数结束时数组单元将被从最低到最高重新安排。
36. 数组合并函数array_merge()和数组加法运算$arr + $arr2 的区别是什么? array_merge()->使用array_merge(),如果是关联数组合并,如果数组的键名相同,那么后面的值将覆盖前者;如果是数字索引数组合并,则不覆盖,而是 后者附加到前者后面。 \使用数组加法运算,与array_merge()不同,加法运算不管是关联数组还是数字索引数组,都是将相同键名的的值舍弃, 也就是只保留首次出现该键名的元素,后来的具有相同键名的元素都不会被加进来。 37. 字符串定义的时候单引号和双引号有什么区别? 38. echo(),print(),print_r()的区别? (1)echo 是语法,Output one or more strings,没有返回值; (2)print 是函数,不能输出数组和对象,Output a string,print有返回值; (3)print_r 是函数,可以输出数组。print_r是个比较有意思的函数,可以输出stirng、int、float、 array、object等,输出array时会用结构表示,print_r输出成功时返回true;而且print_r可以通过print_r($str,true)来,使print_r不输出而返回print_r处理后的值。此外,对于echo和print,基本以使用echo居多,因为其效率比print要高。
39. 按照功能分类说说都有哪些字符串处理函数?这些函数的作用是什么?
A. 字符串输出函数
(1)echo $a,$b,$c......; 是一个语言结构,而不是一个真正的函数。 (2)print($a) 本函数输出字符串。若成功则返回 1,失败返回 0 (3)print_r($a)
(4)var_dump($a); 能输出类型、长度、值 B. 去除字符串首尾空格的函数: trim ltrim rtrim(别名:chop) 使用第二个参数,还可以去除指定的字符。 C. 转义字符串函数:addslashes() D. 获取字符串长度的函数:strlen() E. 截取字符串长度的的函数:substr() F. 检索字符串函数: strstr() , strpos() G. 替换字符串函数:str_replace() 40. 请给出以下问题的正确答案? 1).$arr = array('james', 'tom', 'symfony');请将$arr数组的值用’,’分割并合并成字符串输出? echo implode(‘,’,$arr);
2).$str = ‘jack,james,tom,symfony’; 请将$str用’,’分割,并把分割后的值放到$arr数组中? $arr = explode(‘,’,$str); 3).$arr = array(3,7,2,1,’d’,’abc’); 请将$arr按照从大到小的顺序排序,并保持其键值不变? arsort($arr); print_r($arr);
4).$mail = “gaofei@163.com”; 请将此邮箱的域(163.com)取出来并打印,看最多能写出几种方法? echo strstr($mail,'163'); echo substr($mail,7); $arr = explode(\ 5). 如果有一个字符串,该字符串是“123,234,345,”。请问如何切割掉这个字符串最后一个逗号? 6). 获取随机数的函数有哪几个?mt_rand() 和 rand()哪个执行速度快? 41.页面字符出现乱码,怎么解决? 1.首先考虑当前文件是不是设置了字符集。查看是不是meta标签中写了charset,如果是php页面还可以看看是不是 在header()函数中指定了charset; 例如:
3.如果涉及到从数据库提取数据,那么判断数据库查询时的字符集是否跟当前页面设置的字符集一致,两者必须统一, 例如:mysql_query(“set names utf8”)。
42. 正则表达式是什么?php中有哪些常用的跟正则相关的函数?请写出一个email的正则,中国手机号码和座机号码的正则表达式? 正则表达式是用于描述字符排列模式的一种语法规则。正则表达式也叫做模式表达式。 网站开发中正则表达式最常用于表单提交信息前的客户端验证。 比如验证用户名是否输入正确,密码输入是否符合要求,email、手机号码等信息的输入是否合法。 在php中正则表达式主要用于字符串的分割、匹配、查找和替换操作。 preg系列函数可以处理。具体有以下几个: string preg_quote ( string str [, string delimiter] )
转义正则表达式字符 正则表达式的特殊字符包括:. \\\\ + * ? [ ^ ] $ ( ) { } = ! < > | :。 preg_replace -- 执行正则表达式的搜索和替换
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] ) preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )
preg_split -- 用正则表达式分割字符串 array preg_split ( string pattern, string subject [, int limit [, int flags]] ) 43. 如果想过滤掉某个字符串中所有的html标记使用哪个函数?
44. preg_replace()和 str_ireplace()两个函数在使用上有什么不同?preg_split()和split()函数如何使用?
45. 获取当前时间戳的函数主要有哪些?用PHP打印出今天的时间,格式是2010-12-10 22:21:21? 用PHP打印出前一天的时间格式是2010-12-10 22:21:21?如何把2010-12-25 10:30:25变成unix时间戳? echo date (\d H:i:s\-1,days’)); date('Y-m-d H:i:s',time()); $unix_time = strtotime(\变成unix时间戳 echo date(\格式化为正常时间格式
46. 在url中用get传值的时候,若中文出现乱码,应该用哪个函数对中文进行编码? 用户在网站表单提交数据的时候,为了防止脚本攻击(比如用户输入),php端接收数据的时候,应该如何处理? 使用urlencode()对中文进行编码,使用urldecode()来解码。 使用htmlspecialchars($_POST[‘title’])来过滤表单传参就可以避免脚本攻击。
47. 连接数据库操作的步骤是什么?每一步的返回值是什么数据类型?尤其是mysql_query()返回什么数据类型?
48. 说说mysql_fetch_row() 和mysql_fetch_assoc()和mysql_fetch_array之间有什么区别? 第一个是返回结果集中的一行作为索引数组,第二个是返回关联数组,而第三个既可以返回索引数组也可以返回关联数组,取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为MYSQL_BOTH $sql =”select * from table1”; $result = mysql_query($sql); mysql_fetch_array($result, MYSQL_NUM);
49. 请说出目前学过的返回是资源的函数? 答: mysql_connect(); mysql_query();只有这执行select的时候成功,才返回资源,失败返回FALSE fopen(); 50. 打开、关闭文件分别是什么函数? 文件读写是什么函数?删除文件是哪个函数? 判断一个文件是否存在是哪个函数?新建目录是哪个函数?
51. 文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题? 1.首现要在php.ini中开启文件上传; 2.在php.ini中有一个允许上传的最大值,默认是2MB。必要的时候可以更改; 3.上传表单一定要记住在form标签中写上enctype=\; 4. 提交方式 method 必须是 post; 5. 设定 type=\的表单控件; 6.要注意上传文件的大小MAX_FILE_SIZE、文件类型是否符合要求,上传后存放的路径是否存在。 可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名,这样就避免了重名。 可以自己设置上传文件的保存目录,与文件名拼凑形成一个文件路径,使用move_uploaded_file(),就可以完成 将文件保存到指定目录。
52. $_FILES是几维数组?第一维和第二维的索引下标分别是什么?批量上传文件的时候需要注意什么? 二维数组。第一维是上传控件的name,二维下标分别为name/type/tmp_name/size/error. 57. 什么是会话控制? 简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中跟踪一个变量,通过这个变量, 系统能识别出相应的用户信息,根据这个用户信息可以得知用户权限,从而展示给用户适合于其相应权限的页面内容。 目前最主要的会话跟踪方式有cookie,session。 58. 会话跟踪的基本步骤 1).访问与当前请求相关的会话对象 2).查找与会话相关的信息 3).存储会话信息 4).废弃会话数据
59. 使用cookie的注意事项有哪些? 1) setcookie()之前不可以有任何页面输出,就是空格,空白行也不可以; 2) setcookie()后,在当前页面调用$_COOKIE['cookiename']不会有输出,必须刷新或到下一个页面才可以看到cookie值; 3) 不同的浏览器对cookie处理不同,客户端可以禁用cookie,浏览器也可以闲置cookie的数量,一个浏览器能创建的cookie数量最多300个,并且每个不可以超过4kb, 每个web站点能设置的cookie总数不能超过20个。 4) cookie是保存在客户端的,用户禁用了cookie,那么setcookie就不会起作用了。所以不可以过度依赖cookie。60. 使用session的时候,通过什么来表示当前用户,从而与
其他用户进行区分? sessionid,通过session_id()函数可以取得当前的session_id。
61. session和cookie的使用步骤分别是什么?什么是sesssion和cookie的生命周期?session和cookie的区别是什么? cookie是保存在客户端机器的,对于未设置过期时间的cookie,cookie值会保存在机器的内存中,只要关闭浏览器则 cookie自动消失。如果设置了cookie的过期时间,那么浏览器会把cookie以文本文件的形式保存到硬盘中, 当再次打开浏览器时cookie值依然有效。 session是把用户需要存储的信息保存在服务器端。每个用户的session信息就像是键值对一样存储在服务器端, 其中的键就是sessionid,而值就是用户需要存储信息。服务器就是通过sessionid来区分存储的session信息是 哪个用户的。 两者最大的区别就是session存储在服务器端,而cookie是在客户端。session安全性更高,而cookie安全性弱。 session在web开发中具有非常重要的份量。它可以将用户正确登录后的信息记录到服务器的内存中,当用户以此身份 访问网站的管理后台时,无需再次登录即可得到身份确认。而没有正确登录的用户则不分配session空间,即便输入了 管理后台的访问地址也不能看到页面内容。通过session确定了用户对页面的操作权限。 使用session的步骤: 1. 启动session: 使用session_start()函数来启动。 2. 注册会话: 直接给$_SESSION数组添加元素即可。 3. 使用会话: 判断session是否为空或者是否已经注册,如果已经存在则像普通数组使用即可。 4. 删除会话: 1.可以使用unset删除单个session; 2.使用$_SESSION=array()的方式,一次注销所有的会话变量; 3.使用session_destroy()函数来彻底销毁session。 cookie怎么使用? 1. 记录用户访问的部分信息 2. 在页面间传递变量 3. 将所查看的internet页存储在cookies临时文件夹中,可以提高以后的浏览速度。 创建cookie: setcookie(string cookiename , string value , int expire); 读取cookie: 通过超级全局数组$_COOKIE来读取浏览器端的cookie的值。 删除cookie:有两种方法 1.手工删除方法: 右击浏览器属性,可以看到删除cookies,执行操作即可将所有cookie文件删除。
2.setcookie()方法: 跟设置cookie的方法一样,不过此时将cookie的值设置为空,有效时间为0或小于当前时间戳。
62. 如何设置一个cookie的名字为username,值为jack,并且让此cookie一周后失效? 一个浏览器最多可以产生多少个cookie,每个cookie文件最大不能超过多少? setcookie(‘username’,’jack’,time()+7*24*3600); 最多可以产生20个cookie,每个最多不超过4K 63. 设置或读取session之前,需要做什么? 可以直接在php.ini中开启session.auto_start = 1或者在页面头部用session_start(); 开启session,session_start()前面不能有任何输出,包括空行。 64. 在实际开发中,session在哪些场合使用? session用来存储用户登录信息和用在跨页面传值。 1)常用在用户登录成功后,将用户登录信息赋值给session; 2)用在验证码图片生成,当随机码生成后赋值给session。 65. 注销session会话的形式有几种? unset() $_SESSION=array(); session_destroy();
66. 什么是OOP?什么是类和对象?什么是类属性? OOP(object oriented programming),即面向对象编程,其中两个最重要的概念就是类和对象。 世间万物都具有自身的属性和方法,通过这些属性和方法可以区分出不同的物质。 属性和方法的集合就形成了类,类是面向对象编程的核心和基础, 通过类就将零散的用于实现某个功能的代码有效地管理起来了。 类只是具备了某些功能和属性的抽象模型,而实际应用中需要一个一个实体,也就是需要对类进行实例化, 类在实例化之后就是对象。★类是对象的抽象概念,对象是类的实例化。 OOP具有三大特点:1. 封装性(又叫做隐藏性);2. 继承性; 3. 多态性 OOP的优点:1、代码重用性高(省代码) 2、使程序的可维护性高(扩展性) 3、灵活性
67. 常用的属性的访问修饰符有哪些?分别代表什么含义? private,protected,public 类外:public ,var 子类中:public,protected ,var 本类中:private,protected,public ,var 如果不使用这三个关键词,也可以使用var关键字。但是var不可以跟权限修饰词一起使用。var定义的变量,子类中可以访问到,类外也可以访问到,相当于public 类前面:只能加final,abstract 属性前面:必须有访问修饰符(private,protected,public,var) 方法前面:static,final,private,protected,public ,abstract
68. $this和self、parent这三个关键词分别代表什么?在哪些场合下使用? $this 当前对象 self 当前类 parent 当前类的父类
$this在当前类中使用,使用->调用属性和方法。 self也在当前类中使用,不过需要使用::调用。 parent在类中使用。
69.类中如何定义常量、如何类中调用常量、如何在类外调用常量。 类中的常量也就是成员常量,常量就是不会改变的量,是一个恒值。 定义常量使用关键字const. 例如:const PI = 3.1415326; 无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象, 访问常量的格式都是类名加作用域操作符号(双冒号)来调用。 即:类名 :: 类常量名;
70. 作用域操作符::如何使用?都在哪些场合下使用? 调用类常量 调用静态方法
71. 什么是魔术方法?常用的魔术方法有哪几个? 以__开头的系统自定义的方法。 __construct() __destruct() __autoload() __call() __tostring() 72. 什么是构造方法和析构方法? 构造方法就是在实例化一个对象的同时自动执行的成员方法,作用就是初始化对象。 php5之前,一个跟类名完全相同的方法是构造方法,php5之后魔术方法__construct()就是构造方法。 如果类中没有定义构造方法,那么php会自动生成一个,这个自动生成的构造方法没有任何参数, 没有任何操作。 构造方法的格式如下: function __construct(){} 或者:function 类名(){} 构造方法可以没有参数,也可以有多个参数。 析构方法的作用和构造方法正好相反,是对象被销毁时被自动调用的,作用是释放内存。 析构方法的定义方法为:__destruct(); 因为php具有垃圾回收机制,能自动清除不再使用的对象,释放内存,一般情况下可以不手动创建析构方法。
74. 什么是抽象类和接口?抽象类和接口有什么不同和相似的地方? 抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。 抽象类是通过关键字 abstract 来声明的。 抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法, 抽象方法没有方法体,该方法天生就是要被子类重写的。 抽象方法的格式为:abstract function abstractMethod(); 因为php中只支持单继承,如果想实现多重继承,就要使用接口。也就是说子类可以实现多个接口。
接口类是通过interface关键字来声明的,接口类中的成员变量和方法都是public的,方法可以不写关键字public, 接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。 抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。 子类继承抽象类使用extends,子类实现接口使用implements。 抽象类至少有一个抽象方法吗?????? 答:如果一个类声明成抽象类,里面可以没有抽象方法 如果一个类中有抽象方法,这个类必须是抽象类 75. __call的参数有几个,类型是什么,意义是什么? 魔术方法__call()的作用是当程序调用一个不存在或不可见的成员方法时,php会先调用__call()方法, 将那个不存在的方法的方法名和参数都存储下来。 __call()包含两个参数, 第一个参数是那个不存在的方法的方法名,是个字符串类型; 第二个参数是那个不存在的方法的所有参数,是个数组类型。 本人认为__call()方法的意义更多在于调试,可以定位到错误。同时可以捕捉异常,如果某个方法不存在, 则执行其它可替代方法。
82. final关键字能定义类中的成员属性吗? 答:不能,类的成员属性只能有public ,private , protected ,var 来定义 83. final关键字定义的类能够被继承吗? 答:final定义的类不能被继承
84. 说说static关键字的使用场合?static能用在class前吗?
static可以跟public,protected,private一起使用吗?构造方法可以是static的吗? 答: static可以在属性和方法前面使用,调用static属性或者方法时,只要将类载入就可用,不用实例化 static不能用在class的前面 static可以跟public,protected,private一起使用,在方法的前面; ▲构造方法不能是static
85. 接口可以实例化吗?抽象类能实例化吗? 答:接口和抽象类都不能被实例化
86. class前面能加访问修饰符吗?如果能加,只能是哪几个访问修饰符?可以是权限访问修饰符public,protected,private吗? 答:class前面可以加final,static; ★class前面不能加public,protected,private
87. 类中属性前可以不加访问修饰符吗?成员变量前的修饰符只能是public,protected,private吗?还可以是哪几个? 答:类中的属性必须加修饰符,除了那3个以外,还可以加var
88. 如果echo一个数组,页面输出什么?echo一个对象呢?print一个数组或者对象呢? 答:页面只能输出“Array”;echo一个对象会出现“Catchable fatal error: Object of class t2 could not be converted to string in G:\\php2\\t2.php on line 33” print一个数组时也只是输出“Array”,print一个对象出现“Catchable fatal error: Object of class t2 could not be converted to string in G:\\php2\\t2.php ” ▲print和echo是一样的
89. __tostring()魔术方法在什么时候被自动执行? __tostring()魔术方法必须要return返回值吗? 当echo或者print一个对象时,就是自动触发。而且__tostring()必须要返回一个值 90. 什么是抽象方法? 答:在方法前面有abstract,而且方法没有方法体,连“{ }”也不能有
91. 如果一个类中有一个方法是抽象方法,而这个类没有定义成抽象类,会报错吗? 答:会,\error: Class t2 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (t2::ee) in\
92. 如果一个类是抽象类,而类中的方法都是非抽象的方法,会报错吗? 答:不会报错,如果一个类是抽象类,其中可以没有抽象方法,但是一个类中有个方法是抽象方法,那么这个类一定是一个抽象类 94. final 关键字的应用应注意的问题? 使用final关键字定义的类,禁止继承。 使用final关键字定义的方法,禁止重写。
95. 如果一个类既要继承一个父类,又要实现多个接口,该如何写? 书写格式例如: class MaleHuman extends Human implements Animal,Life { ... } 97. PHP提供了2套正则表达式函数库,分别是哪两套?【 (1) PCRE Perl兼容正则表达式 preg_ 为前缀 (2) POSIX 便携式的操作系统接口 ereg_ 为前缀 98. 正则表达式的组成?
由原子(普通字符,如英文字符)、 元字符(有特殊功用的字符) 模式修正字符
一个正则表达式中,至少包含一个原子 99. 不常用魔术方法的触发时机? __isset() __unset()的触发时机
__sleep()、 __wakeup() 在对对象进行串行化的时候调用 如果序列化对象的时候,不写__sleep()方法,则所有的成员属性都会被序列化,而定义了__sleep()方法,则只序列化指定数组中的变量。 因此,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。 使用 __sleep 的目的是关闭对象可能具有的任何数据库连接,提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。 使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接以及处理其它重新初始化的任务。
100. OOP的三大特性是什么? 1. 封装性: 也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。 于是开发人员只需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖, 实现代码模块间松藕合。
2. 继承性: 就是子类自动继承其父级类中的属性和方法,并可以可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。 php只支持单继承,也就是说一个子类只能有一个父类。 3. 多态性: 子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。 于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。 多态性增强了软件的灵活性 101.常见框架 thinkPHP yii ZendFramework CakePhp sy
102. 常用魔术方法的触发时机? 1)__autoload() :当程序实例化某个类,而该类没有在当前文件中被引入。此时会触发执行__autoload()。程序希望通过该方法,自动引入这个类文件。该方法有一个参数,即就是那个忘记引入的类的名称。__autoload()方法的工作原理是什么?当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后,就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。使用自动载入的魔术函数可以不必要写很多个include或者require函数。 2)__construct() :这个是魔术构造方法。构造方法是实例化对象的时候自动执行的方法,作用就是初始化对象。该方法可以没有参数,也可以有多个参数。如果有参数,那么new这个对象的时候要记得写上相应的参数。在php5以前,没有魔术构造方法,普通构造方法是一个跟类名同名的方法来实现构造的。如果一个类中既写了魔术构造方法,又定义了普通构造方法。那么php5以上版本中,魔术方法起作用,普通构造方法不起作用。反之,在php5以前版本中,不认识魔术构造方法,只是把该方法当做普通的方法。 3)__destruct() :这个是魔术析构方法。析构方法的作用和构造方法正好相反,是对象被销毁时被自动调用的,作用是释放内存。析构方法没有参数。 4)__call() :当程序调用一个不存在或不可见的成员方法时,自动触发执行__call()。它有两个参数,分别是未访问到的方法名称和方法的参数。而第二个参数是数组类型。 5)__get() :当程序调用一个未定义或不可见的成员属性时,自动触发执行__get()。它有一个参数,表示要调用的属性的名称。 6)__set():当程序试图写入一个不存在或不可见的成员属性时,PHP就会自动执行__set()。它包含两个参数,分别表示属性名称和属性值。 7)__tostring() :当程序使用echo或print输出对象时,会自动调用该方法。目的是希望通过该方法将对象转化为字符串,再输出。__tostring() 无参数,但是该方法必须有返回值 8)__clone() :当程序clone一个对象的时候,能触发__clone()方法,程序希望通过这个魔术方法实现:不仅仅单纯地克隆对象,还需要克隆出来的对象拥有原来对象的所有属性和方法。
104、 访问权限修饰符有哪几种,对比解释 答:1、public 表示公共的,在本类中和子类中以及类外,可以对其调用 2、protected表示受保护的,可以在本类中和子类中调用 3、private表示私有的,只能在本类中调用 4、var,效果等同于public
105、 Class关键词前可以有哪些修饰词 a) Final修饰,表示该类是最终的,无法继承 b) Abstract修饰,表示该类是抽象类 106、 作用域操作符在那些场合下使用 答:作用于操作符的使用场合 a) 本类中: i. self::类常量 ii. self::静态属性 iii. self::方法() parent::方法() b) 子类中: i. parent::类常量 ii. parent::静态属性(public或者protected) iii. parent::方法()(public或者protected) c) 类外: i. 类名::类常量 ii. 类名::静态属性(public) iii. 类名::静态方法(public)
107、 $this,self, parent分别代表什么?哪些场合下使用 答:$this代表的是当前对象 self代表的是当前的类 parent代表的是当前类的父类 使用场合: $this只能使用在当前类中,通过$this->可以调用当前类中的属性和方法; self只能在当前类中使用,通过作用域操作符::访问当前类中的类常量、当前类中的静态属性、当前类中的方法; parent只能使用在有父类的当前类中,通过作用域操作符::访问父类中的类常量、父类中的静态属性、父类中的方法。
108、 说明是接口、抽象类二者有何相同和不同的地方? 1、接口是帮助php实现功能意义上的多继承的,用interface来声明,其方法没有方法体,使用implemens关键词来实现接口。 接口中只能包含抽象方法和类常量,不可以包含成员属性。 2、抽象类是一种不能被实例化的类,只能作父类,用abstract class来定义,抽象类和普通类可以没有区别,类中可以包含成员属性、类常量、方法。 子类得用extends来继承,而且只能是单继承。 两者相同点是都不可以被实例化,都是需要被继承才可以使用。 两者的最大区别是接口可以实现多继承,而抽象类只能是单继承。 接口中不能包含成员属性,而抽象类中可以有成员属性。 接口中的抽象方法必须是public或者无访问修饰词,接口中的抽象方法不能用abstract来修饰。
抽象类中的方法可以是普通方法,也可以是抽象方法,如果是抽象方法,一定需要使用abstract来修饰。
113、 $_REQUEST、$_GET、$_POST、$_COOKIE 的关系和区别: 1.关系:$_REQUEST包含了$_GET、$_POST、$_COOKIE等的所有内容,是它们的集合体。 2.通过$_REQUEST获取变量值,PHP页面因为不确定它是哪种传值方式, 因此会根据php.ini中的配置来接收值。 php.ini里可以设置,variables_order = “GPC”。其含义是GET,POST,COOKIE. 所以PHP页面会先从$_GET中获取,再从$_POST中获取,然后从$_COOKIE中获取。 新获得的值会覆盖之前获取到的值。 因此从表现形式上看,$_REQUEST最后是获取$_COOKIE中的值,如果$_COOKIE中没有值, 会获取$_POST中的值,如果$_POST没有获取到 ,就去$_GET中获取。 如果$_GET中也没有该值,那么$_REQUEST就返回null。 114、 什么是多条件查询(复合查询),如何实现多条件查询? 如何实现万能查询呢?查询的时候要填写查询条件,这些条件会通过表单进行提交。 首先需要检查提交的条件是否为空。如果不为空,就认为这个值是要被当作条件, 我们就可以使用字符串连接的方式来组合一个sql查询语句。 当执行后获取查询结果。
115. 文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题? 1). 首现要在php.ini中开启文件上传; 2). 在php.ini中有一个允许上传的最大值,默认是2MB。必要的时候可以更改; 3). 上传表单一定要记住在form标签中写上enctype=\; 4). 提交方式 method 必须是 post; 5). 设定 type=\的表单控件,并且必须具有name属性值; 6). 为了上传成功,必须保证上传文件的大小是否超标、文件类型是否符合要求,上传后存放的路径是否存在; 7). 表单提交到接收页面,接收页面使用$_FILES来接收上传的文件。 $_FILES是个多维数组。第一维下标是上传控件的name,二维下标分别为name/type/tmp_name/size/error。分别代表 文件名、文件类型、上传到临时目录下的临时文件名、文件大小、是否有错误。 如果是批量上传,那么二维下标就是数组,而并非是字符串。 8). 文件上传后是被放置在服务器端临时路径下,需要使用move_uploaded_file ()函数,才可以将上传后的 文件保存到指定目录。 9). 为了避免上传文件重名,可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名。
119. 什么是事务?什么是回滚?事务的作用是什么? 事务就是组合起来的几个独立的sql操作。如果其中一项失败,那么就让这几个组合起来的sql操作都 回退到未执行状态。这就是事务的回滚。 mysql中MyISAM存储引擎的表不支持事务,只有InnoDB 存储引擎的表才支持事务,为了让事务正常执行, 就需要让参与事务的所有数据表都设置成innoDB类型。
事务被包装在了 BEGIN 和 COMMIT 语句之间。在没有使用 COMMIT 语句的情况下,对数据库的操作不是永久的, 一旦运行了 ROLLBACK,就会被回退。只有执行了COMMIT,数据表中的信息才被改动。 事务的目的就是为了保证数据的完整性。
120. 模拟SESSION机制实现数据库存放会话数据有什么作用?【备用】
如果使用默认的SESSION机制,大家都知道默认的SESSION_ID是存放在COOKIE中,用户的身份是靠SESSION_ID来识别的, 而COOKIE文件是存放在用户浏览器的客户端,这样就会带来一个问题,当用户在办公室选择一些商品到购物车, 在准备下订单付款的时候,用户选择了支付宝在线的支付方式,恰巧办公室的电脑上面没有安装支付宝的数字证书, 而在用户家里的电脑安装过数字证书,所以呢,用户就需要回家去支付。但是回家登录商城之后, 发现购物车中精心挑选的商品都不存在了。这是为什么呢?问题就在家里电脑上的并没有存放SESSION_ID的cookie文件, 因而就无法正确的读取服务器上对应session文件中的数据,所以无法将原来的选择的商品息读取过来。 这样的购物车功能给用户的用户体验式非常糟糕的,所以我们就需要采取模拟SESSION机制使用数据库来存放会话数据。 5. 当通过以下sql语句就可以实现,相同顶级类下的信息都在一起集中显示。 select * from 表名 where 条件 order by path; 122. 分页原理是什么? 数据分页需要以下几个条件: 1. 参与分页的总条数 【$msg_count】 ,该值通过数据库查询可以获取到; 2. 每页显示的条数【$pagesize】 ,这个数值由自己定义; 3. 当前页的页码数 【$page】,该数值通过地址栏传递和接收; 4. 可以通过以上资料计算出总页数 【$pagecount】 ,此处需要借助ceil(); 【$pagecount = ceil($msg_count/$pagesize);】 5. 数据库查询借助sql语句中的【limit】来实现数据的变化: 例如: select * from 表名 where 条件 limit $startnum , $pagesize; 而$startnum = ($page-1)*$pagesize; 125、 写程序实现如下功能: a.如何判断一个字符串中是否存在一个字符? echo strstr('abcdefgcd' , 'cd'); echo strpos('ab0defgcd' , 'cd'); b.如何判断一个字符串中一个字符出现的次数? echo substr_count('abcdefgcd' , 'cd'); c.如何去掉一个字符串的最后一个字符 echo substr('abcdefgcd' , 0 , -1); PHP网络编程 期中考试试题
一、 单项选择题(每题3分共计30分)
1、在HTML中嵌入PHP代码,有以下几种方法,其中错误的是()。 A. 以””结束,中间为PHP代码。
B. 以以结束,中间为PHP操作代码。 C. 以””开头,以”?>”结束,中间为PHP操作代码。 D. 以”<!”开头,以”!>”结束,中间为PHP操作代码。 2、以下变量的值不为65的是()。 A. $a=065; B. $a=0x41; C. $a=’A’; D. $a=0101; 3、在下列()情况下,变量不被认为是NULL。
A. 变量赋值为NULL B. 变量赋值为空字符串 C. 变量尚未赋值 D. 变量被unset函数释放 4、下列变量名称有误的是()。
A. $_1na=12; B. $myweb=“www.163.com”; C. $Site163=“www.163.com”; D. $我的变量=“test”;
5、假设$a=5,有$a+=2,则$a的值为()。 A. 5 B. 6 C. 7 D. 8 6、在PHP中属于比较运算符的是()。 A. = B.! C. = = D. & 7、下列()函数可以判断读取是否至压缩文件的末尾。
A. feof( ) B. gzeof( ) C. gzrewind( ) D. gzseek( ) 8、下列说法中,错误的是()。
A. echo、print、printf可以打印变量内容,但不能显示数组及系统超级变量数组 B. print_r不仅可以打印数组、标量变量,还可以打印对象的内容
C. echo是一个语句,可以使用.(小圆点)来拼接字符串,而print则不可以。 D. echo语句可以有返回值
9、下列有关get和post方法传递参数的说法中,正确的是()
A. get方法是发送请求HTTP协议通过URL参数传递进行接收,传递参数简单,且没有长 度限制。
B. post方法是通过表单传递参数,可以提交大量的信息。
C. 使用post方法传递参数会出现页面参数泄露在地址栏中的情况。 D. 使用URL可以传递多个参数,参数之间需要用“$”连接。 10、在PHP函数中,属于选择数据库函数的是()。 A. mysql_fetch_row B. mysql_fetch_object C. mysql_result D. mysql_select_db 二、 写出下列 各小题的输入结果(第1、2小题各3分,第3、4小题各6分,第5、6 小题各8分,共34分) 1、
function test(){ echo $a; } test(); ?> 2、
$a=$b>$c?4:5; echo $a; ?> 3、
$arr=array(5=>1,12=>2); $arr[]=3;
$arr[\ print_r($arr); echo “
”; unset($arr); print_r($arr); ?> 4、10) break; echo $i++.\、
$table=\ for($j=1;$j<=$n;$j++){
$table .= \ $table .= \
$table .= \6、
$id=gzopen(\
gzwrite($id,\
\
gzclose($id);$id=gzopen(\
gzputs($id,\ gzclose($id);$id=gzopen(\r>\
三、 编程题(第1小题15分,第2小题21分共36分)
1、有一个数组$a=array(4,3,8,9,2),将其重新排序并输入结果,按从小到大的顺序排列。 2、数据库qzh中有一个表user,其结构为(name,tel,content,date),已有如下三条记录 张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15 张四 021-55665566 中专毕业 2006-10-15 请使用php编写程序实现:
(1)查询所有姓名为“张三”的记录,并使用mysql_fetch_array函数输出查询结果; (2)添加记录(小王 13254748547 高中毕业 2007-05-06)至表中; (3)张三的时间更新成为当前系统时间。
注意:请将以上三个操作作为一个事务来处理,即以上三个操作全部成功时,才提交事务,只要有一个操作失败,其余两个操作不能提交。 答案 一:D B B D C C B D B D
二:1、无输出 2、4 3、Array ( [5] => 1 [12] => 2 [13] => 3 [x] => 4 ) Array ( [12] => 2 [13] => 3 [x] => 4 )
4、1 2 3 4 5 6 7 8 9 10 5、
m:1, n:1 m:1, n:2 m:1, n:3 m:2, n:1 m:2, n:2 m:2, n:3
6、1 234
tle>this is a test.the second line. 三、 1、
for ($i=0; $i
$a[$i+1] = $temp; } } $j++; } print_r($a); ?>
2、
//用户注册事务开始
$dbconn = mysqli_connect(\不能连接到数据库\
//查询user表中所有姓名为“张三”的记录 $sql1 = \张三'\
mysqli_rollback($dbconn); //如果出错,则回滚到开始状态 //添加记录(小王 13254748547 高中毕业 2007-05-06)至表中
$sql2 = \小王','13254748547','高中毕业',20070506)\
mysqli_rollback($dbconn); //如果出错,则回滚到开始状态 //更改张三的毕业时间为当前系统时间
$sql3 = \张三'\
mysqli_rollback($dbconn); //如果出错,则回滚到开始状态 //没有任何错误,则提交,完成一次事务操作 mysqli_commit($dbconn); //关闭数据库连接 mysqli_close($dbconn); ?>
$conn = mysql_connect('localhost','root','123'); mysql_select_db('test'); $query = \
//使用mysql_fetch_array函数输出查询结果 while($row = mysql_fetch_array($result)){ echo $row[0].\w[2].\
五一长假除了旅游 还能做什么? 辅导补习 美容养颜 家庭家务 加班须知 ?>
A 输出a B 输出b
C 条件不足,无法确定 D 运行出错
37.在str_replace(1,2,3)函数中1 2 3 所代表的名称是( ) B A \取代字符串","被取代字符串","来源字符串" B "被取代字符串",\取代字符串","来源字符串" C "来源字符串",\取代字符串","被取代字符串" D "来源字符串","被取代字符串",\取代字符串"
38.浏览网页时,看到的内容是HTML的哪一部分? C A title B table C body D head 39.运算符\的作用是( ) C A 无效 B 取整 C 取余 D 除
40.file( )函数返回的数据类型是( ) A A 数组 B 字符串 C 整型 D 根据文件来定
41.计算字符串长度的函数是( ) A A strlen( ) B len( ) C stringlen( ) D lens( )
42.array_push()的作用是( ) C A 将数组的第一个元素弹出 B 将数组的最后一个元素弹出
C 将一个或多个元素压入数组的末尾 D 将一个或多个元素插入数组的开头 43.isset()的功能是( ) A A 测试变量是否存在
B 测试变量是否为空 C 测试常量是否为空 D 测试常量是否存在
44.定义静态变量的关键字是( ) A A static B statics C STATIC D STATICS 45.以下属于忽略键名数组排序的是( ) D A natsort B ksort C asort D sort 46.empty()的功能是: A A 测试变量是否为空 B 测试变量是否存在 C 测试常量是否为空 D 测试常量是否存在
47.浏览网页时,看到的内容是HTML的哪一部分? C A title B table C body D head 48.自定义用户常量,可以使用( )函数. B A Define( ) B define( ) C Defin( ) D defin( ) 49.执行下列代码后的结果是( ) $x=15; echo $x++; $y=20; echo ++$y; B A 15,20 B 15,21 C 16,20 D 16,21 50.申明全局变量的关键字是( ) B A globals B global C GLOBAL D 无
多项选择题:(共12题,每题5分)
1.php中,不等运算符是( ) BC A ≠ B != C <> D ><
2.函数的参数传递包括: AB A 按值传递 B 按引用传递 C 按变量传递 D 按作用域传递
3.php中,赋值运算符有( ) ADB A = B += C == D .=
4.php中可以实现程序分支结构的关键字是( ) CD A while B for C if D switch
5.continue语句可以用在( )中。 ABC A for B while C do-while D switch 6.break可以用在( )语句中 ABCD A switch B for C while D do-while
7.php中可以实现循环的是( ) A C A for B break C while D waiting 8.PHP中,标识符允许出现的符号有: ABC A 大写字母 B 小写字母 C 数字 D 减号
9.PHP允许的注释符号有: ACD A // B 闭合的段落 C # D /*和*/闭合的段落
10.PHP表单的提交方法有: ACB A post B request C get D querystring
11.PHP语言标记用的是什么( )符号 ACD A 〈? ?> B 〈php > C 〈?php ?> D 〈% %> 12.php中数组可以使用哪些键名? AB A 数字键名 B 下标 C 随机 D 文本(或字符串)键名
判断题:(共40题,每题1分)
1.在返回数组中的所有值,可以使用array_value( )函数 T 2.运算符“++”可以对常量和变量进行累加1 F
3.php语言中的数值型字符串可以和数字变量进行混合运算. T 4.php中,双引号字符串支持变量解析以及转义字符. T
5.php语言中的数值型字符串不可以和数字变量进行混合运算. F 6.PHP程序的扩展名必须是.php F
7.php中,字符串是用引号引起来的字符,单引号和双引号没有区别,都是一样的,随便用哪一个都是一样的. F
8.if条件控制语句中,if后面的{ }可有可无,意义一样。 F
9.一个MySQL服务器,可以拥有多个数据库,每个数据库可拥有多个表. T
10.MS-server200与mysql一样,同属微软公司的产品,用于软件开发的数据库支持 F 11.运算符“--”可以对常量和变量进行自身减1 F
12.php中,单引号字符串不支持变量解析以及转义字符. T 13.if条件控制语句中,if后面的{ }不能省略。 F 14.< f orm id=\,默认的method使用get进行值传递。 F 15.〈 form id=\,默认的method使用post进行值传递。 F
16.常量的作用域是全局的,不存在全局与局部的概念. T 17.if条件控制语句中,if后面必须加括号 T
18.使用get和post传递表单值没有什么区别,可以随便选择一种使用. F 19.php中,在任何时候,双引号和单引号都是不一样的. F 20.运算符“++”只能对常量进行自身加1 F
21.if条件控制语句中,if后面的{ }可有可无。 F 22.PHP跟ASP一样,只能应用IIS架设服务器 F
23.MySQL可以建立个用户,但每个用户的权限一样,仅是名称不一样而已. F 24.php中,()与{ }具有不一样的功能。 T
25.php中可以使用method=post的方式进行文件上传 F 26.php中,==与===是同一个运算符。 F
27.MySQL数据库可以建立多个用户,且各个用户的权限可以分别设置. T 30.array_search() 与in_array()函数均可用来查询数组中元素的值。 F 31.PHP是微软
公司开发的,应用于设计网页的语言 F
32.php中,双引号和单引号在某些时候具有不同的意义,在某些时候具有相同的意义. T 33.array_unshift()函数在数组的末尾插入一个或多个元素,返回成功插入后的总元素个数。 F
34.current()和pos()均可返回数组中的当前单元。 F
35.在返回数组中的所有值,可以使用array_keys( )函数 F 36.php中,函数默认按值传递参数。 T
37.php中,双引号字符串不支持变量解析以及转义字符. F
38.session与cookie只是名称不同,实质上没有什么区别,均可用于实现用户登录等功能. F 39.运算符“++”只能对变量的值自身累加1 F 40.安装Windows XP后,系统默认状态没有安装PHP环境;而安装Windows 2003后,系统自动安装了PHP环境,不用我们再安装. F
正在阅读:
PHP与Mysql练习题二01-20
0-1岁半的婴儿启蒙教育指导08-10
《歌颂祖国放飞梦想》主题中队会04-02
2012全国软考网络工程师考试大纲及知识点 - 图文10-14
雅思听力最重要的807个词汇08-24
国旗下讲话稿 - 珍爱生命 远离危险-优秀word范文(2页)12-23
2014年中国快运快递行业竞争报告05-12
汽车文化知识(答案)08-28
新型应用型本科院校发展的14个基本问题01-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 练习题
- Mysql
- PHP
- 主便休闲小食品项目可行性研究报告(发改立项备案+2013年最新案例范文)详细编制方案
- 关于对市政协第十二届第三次会议第51号提案的答复函
- 2014.8.18附件1:新乡学院教学大纲模版
- 房地产年度总结 - 图文
- 甲级单位编制印刷膜项目可行性报告(立项可研+贷款+用地+2013案例)设计方案
- 宁波特大桥305-308梁部挂篮施工方案
- 超声检测试卷二级2
- 化工原理课程设计 乙醇丙醇筛板精馏塔
- 2013年注册会计师后续教育课后练习
- 橘子皮中含有大量的维生素C和香精油
- 医学统计学试题及答案
- 关于2011-2012学年学籍异动的决定(稿) - 图文
- 生物必修二(人教版)本节聚焦答案及提示
- 09级概率论与数理统计习题册
- 政治经济学(社)第1章--第9章在线测试
- 二上第一次段考
- 2010年下半年江苏省优质幼儿园名单
- 真善美学校文化建设规划
- 2018年四川省自贡市中考语文试题及参考答案(word解析版)
- 2014四川省公选(公开选拔)领导干部考试技巧、答题原则