php高难度简答题,PHP简答题大题含答案.pdf

重要知识点: 1、变量赋值方式有哪几种? 1)直接赋值$str = 123; 2)变量间赋值 $arr = array(); $arr[] = 123; $arr[] = 456; $a; $a = 123; 3)引用赋值 $a = 123; $b = $a; 2、引用和拷贝有什么区别? 拷贝是将原来的变量内容复制下来, 拷贝后的变量与原来的变量使用各自的内存, 互不 干扰。 引用相当于是变量的别名, 其实就是用不同的名字访问同一个变量内容。 当改变其中一 个变量的值时,另一个也跟着发生变化。 3、 php 中变量有哪些基本数据类型? php 支持 8 种原始数据类型。 包括: 四种标量类型 (布尔型 boolean, 整型 interger, 浮点型 float/double , 字符串 string) 两种复合类型(数组 array , 对象 object) 两种特殊类型(资源 resource,NULL) 4、其它类型转换为 boolean 类型时,哪些被认为是 false? 布尔值 false,整型值 0, 浮点型值 0.0, 空白字符串, 字符串'0', 空数组, 空对象, 特殊数据类型 NULL, 没有设定的变量。 empty()函数在哪些情况下返回 true? 布尔值 false,整型值 0, 浮点型值 0.0, 空白字符串, 字符串'0', array()空数组, 特殊数据类型 NULL, 没有任何属性的对象,没有赋值的变量。 5、常量和变量有哪些区别? 1)常量前没有$符号; 2)常量只能通过 define()定义,而不能通过赋值语句定义; 3)常量可以在任何地方定义和访问,而变量定义的反问有固定的规则; 4)常量一旦定义就不能被重新定义或者取消定义,而变量而通过赋值方式重新定义; 5)常量的值只能是标量数据,而变量的数据库类型有 8 中原始数据类型。 6、函数的优越性有哪些? 提高程序的可维护性 提高软件的可靠性 提高程序的可重用性 提高程序的开发效率 7. 如何定义一个函数?函数名区分大小写吗? 1)使用 function 关键字; 2)函数命名规则和变量一样,以字母或者下划线开头,而不能以数字开头; 3)函数名不区分大小写; 4)函数名不可以使用已经声明过的或者系统自建的函数名称。 8. 什么是局部变量和全局变量?函数内是否可以直接调用全局变量? 局部变量是函数内部定义的变量, 其作用域是所在的函数。 如果函数外还有一个跟局部 变量名字一样的变量, 程序会认为它们两个是完全不同的两个变量。 当退出函数的时候, 其中的局部变量就同 时被清除。 全局变量是定义在所有函数以外的变量, 其作用域是整个 php 文件, 但是在用户自定义 的函数内部是无法使用的。 如果一定要在用户自定义的函数内部使用全局变量,那么就需要使用 global 关键字声 明。 也就是说如果在函数内的变量前加上 golbal 来修饰,那么函数内部就可以访问到这个 全局变量, 不仅可以利用这个全局变量进行运算而且可以对这个全局变量进行重新赋值。 全局变量还可以使用 $GLOBALS['var'] 来调用。 9. php 中函数传递参数的方式有哪些?两者有什么区别? 按值传递和按地址传递(或按引用传递) (1)按值传递、待传递的变量,与传递给函数之后的变量是存储在不同的空间中。所 以函数体内对 该变量值做的修改,不影响原本的变量值。 (2)按地址传递、 使用 $arr[1] = 2; 特别注意: 数组的下标如果是等价于整数的字符串值(但不能以 0 开头),则会被当作整数对待。 例如: $array[3] 与$array['3'] 引用的是相同的一个元素,而 $array['03'] 引用的则就是另外的一个元素了。 12.数组如何遍历? ①for 循环 $arr[] = 123; $arr[] = 456; $arr[] = 789; for($i=0; $i“; } ② foreach 循 环, 这 是 最 常 用 的 遍 历 方 式 。 用 法 如 下 : foreach($arr as $key=$value){} ③list each 和 while 配合起来循环 13. foreach 数组的时候指针是如何指向的?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 $. ]] ) 将一个或多 个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 特别注意: 如果输入的数组中有相同的字符串键名, 则该键名后面的值将覆盖前一 个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引 4) 数组与字符串之间的转换 (1)explode ( string $separator , string $string [, int $limit ] )使用 一个分隔字符来分隔一个字符串。 (2)implode ( string $glue , array $arr )使用一个连接符将数组中的每个单 元连接为一个字符串。 join 为 implode 的别名 5) sort(array 是一个语言结构,而不是一个真正的函数。 (2)print($a)本函数输出字符串。若成功则返回 1,失败返回 0 (3)print_r($a) (4)var_dump($a); 能输出类型、长度、值 B. 去除字符串首尾空格的函数: trimltrimrtrim(别名:chop)使用第二个 参数,还可以去除指定的字符。 C. 转义字符串函数:addslashes() D. 获取字符串长度的函数:strlen() E. 截取字符串长度的的函数:substr() F. 检索字符串函数: strstr() , strpos() G. 替换字符串函数:str_replace() 17.页面字符出现乱码,怎么解决? 1.首先考虑当前文件是不是设置了字符集。查看是不是 meta 标签中写了 charset,如 果是 php 页面还可以看看是不是 在 header()函数中指定了 charset; 例如: header(“content-type、text/html;charset=utf-8”); 2.如果设置了字符集(也就是 charset),那么判断当前文件保存的编码格式是否跟页 面设置的字符集保持一致, 两者必须保持统一; 3.如果涉及到从数据库提取数据, 那么判断数据库查询时的字符集是否跟当前页面设置 的字符集一致,两者必须统一, 例如:mysql_query(“set names utf8”)。 18. 获取当前时间戳的函数主要有哪些? 用 PHP 打印出今天的时间,格式是 2010-12-10 22:21:21? 用 PHP 打印出前一天的时间格式是 2010-12-10 22:21:21? 如何把 2010-12-25 10、30、25 变成 unix 时间戳? echo date (“Y-m-d H、i、s“ ,strtotime(‘-1,days’)); date('Y-m-d H、i、s',time()); mktime(小时,分钟,秒,月,天,年);//将时间信息转化为时间戳 $unix_time = strtotime(“2009-9-2 10、30、25“);//变成 unix 时间戳 echo date(“Y-m-d H、i、s“,$unix_time);//格式化为正常时间格式 19. 连接数据库操作的步骤是什么?每一步的返回值是什么数据类型?尤其是 mysql_query()返回什么数据类型? 连接数据库操作的步骤: ① 建立与 MySQL 服务器的连接 ② 设置字符集;mysql_query(“set names 'gb2312'“) ③ 选择要操作的数据库 ④ 创建结果集 ⑤ 将结果集中的一行记录读入数组中 ⑥ 在网页上输出数组元素的值 $conn=mysql_connect(“servername“,“username“,“passward“);//打开连接 mysql_select_db(“guestbook“,$conn);//连接到指定的数据库 $result=mysql_query(“Select * from guestbook“,$conn);//创建结果集 20、设计网站的过程和步骤是什么? ①可行性分析 ②功能需求分析 ③数据库设计 ④页面设计 ⑤后台程序开发 ⑥测试 ⑦发布 21、表单操作的两种方式(get、post)的区别、联系和应用 Post 是系统默认值。 用 get 方式会将表单的值显示在 url 中,适合传输小量数据。 用 post 方式则不会把表单的值显示在 url 中,适合大量数据的传送。 $_GET 变量和$_POST 都是一个包含名称[name]和[value]的数组, 这些名称和值都可以利用。 22、文件操作,如上传、读、写、打开、关闭等操作 fopen()文件打开,fclose()文件关闭,fread()文件读取,fwrite()文件写入 unlike()删除文件,file_exists(文件是否存在),kmdir(新建目录) 23.Cookie 和 session 的区别和用法 最大区别在于 session 是保存在服务端的内存里面,而 cookie 保存于浏览器或客户端文件 里面;session 是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之 后,session 也就“消失”了,而 cookie 更多地被用于标识用户,它可以是长久的,用于 用户跟踪和识别唯一用户,而 session 又是以 cookie 为基础的 编程题: 1.请编写一个 php 页面 ,可以完成: 通过表单接收一个整数 n,在网页上输出如下图形,比如用户输入了 4,则显示如下图形 (1) * ** *** **** (2) * *** ***** ******* (3) ******* ***** *** * 2. 写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。 (不 能使用系统已有函数) //冒泡排序(数组排序) function bubble_sort($array) { $count = count($array); if ($count $i; $j--){ if ($array[$j] $array[$j-1]){ $tmp = $array[$j]; $array[$j] = $array[$j-1]; $array[$j-1] = $tmp; } } } return $array; } //快速排序(数组排序) function quicksort($array) { if (count($array) = 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $icount($array); $i++){ if ($array[$i] = $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quicksort($left_arr); $right_arr = quicksort($right_arr); return array_merge($left_arr, array($key), $right_arr); } 3. PHP 中操作文件与文件夹 (1) 遍历给定目录下的所有文件和文件夹 (2) 读取文本文件和 html 文件的方法 (3) 实现文件(图片)上传和下载 1.include 与 include_once 的区别? include 与 require 的区别? 在较新版本的 PHP 中,require(或 requier_once())和 include()(或 include_once())只有一个 区别——如果包含的文件不存在,前者将产生一个致命错误,同时终止脚本的执行;而后者 只会产生一个警告。 2.如何生成隔行背景变换的表格?

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值