重要知识点: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)按地址传递、使用 & 符号,表明该参数是以地址的方式传递值。
并不会将主程序中的指定数值或目标变量传递给函数,而是把该数值或变量的内存储存区块地址导入函数之中,所以函数体内的该变量和主程序中的该变量在内存中是同一个。
函数体做的修改,直接影响到函数体外部的该变量的值。
10. 控制流程语句有哪些?1:三种程序结构顺序结构、分支结构、循环结构2:分支: if/else/elseif/ switch/case/default3、 switch 需要注意的:case子句中的常量可以是整型、字符串型常量、或者常量表达式,不允许是变量。
同一个switch子句中,case的值不能相同,否则只能取到首次出现case中的值。
4、循环 for while do...whiledo...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循环$arr[] = 123;$arr[] = 456;$arr[] = 789;for($i=0; $i<count($arr); $i++){echo $arr[$i]."<br>";}②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 &$array [, int $sort_flags ]) —对数组按照值排序,当本函数结束时数组单元将被从最低到最高重新安排。
16、数组合并函数array_merge()和数组加法运算$arr + $arr2 的区别是什么?使用array_merge(),如果是关联数组合并,如果数组的键名相同,那么后面的值将覆盖前者;如果是数字索引数组合并,则不覆盖,而是后者附加到前者后面。
使用数组加法运算,与array_merge()不同,加法运算不管是关联数组还是数字索引数组,都是将相同键名的的值舍弃,也就是只保留首次出现该键名的元素,后来的具有相同键名的元素都不会被加进来。
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()17.页面字符出现乱码,怎么解决?1.首先考虑当前文件是不是设置了字符集。
查看是不是meta标签中写了charset,如果是php页面还可以看看是不是在header()函数中指定了charset;例如:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />header(“content-type、text/html;charset=utf-8”);2.如果设置了字符集(也就是charset),那么判断当前文件保存的编码格式是否跟页面设置的字符集保持一致,两者必须保持统一;3.如果涉及到从数据库提取数据,那么判断数据库查询时的字符集是否跟当前页面设置的字符集一致,两者必须统一,例如:mysql_query(“set names utf8”)。