PHP常见知识点总结<一>

ruziwang · · 54 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ruziwang/article/details/79047607

PHP常见知识点总结<一>

 

1. 变量如何定义?如何检查变量是否定义?如何删除一个变量?怎样检测变量是否设置

$定义 isset()// 检测变量是否设置
defined()// 检测常量是否设置
unset()//销毁指定的变量
empty()// 检测变量是否为空

 

2. 什么是可变变量?

一个变量的变量名可以动态的设置和使用。
$a='hello',$$a='world',${$a}=helloworld

 

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. 什么是静态变量?

如果一个函数内定义的变量前使用关键字 static 来声明,那
么该变量就是静态变量。
一般函数内的变量在函数调用结束后,其存储的数据将被清
除,所占的内存空间也被释放。而使用静态变量时,该变量
会在函数第一次被调用时被初始化,初始化后该变量也不会
被清除,当再次调用该函数时,这个静态变量不再被初始化,
而能保存上次函数执行完后的值。可以说静态变量在所有对
该函数的调用之间共享。

 

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

按值传递和按地址传递(或按引用传递)
(1)按值传递: 待传递的变量,与传递给函数之后的变量是存
储在不同的空间中。所以函数体内对
该变量值做的修改,不影响原本的变量值。
(2)按地址传递: 使用 & 符号,表明该参数是以地址的
方式传递值。并不会将主程序中的指定数值或目标变量传递
给函数,而是把该数值或变量的内存储存区块地址导入函数
之中,所以函数体内的该变量和主程序中的该变量在内存中
是同一个。函数体做的修改,直接影响到函数体外部的该变
量的值。

 

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

递归函数其实就是调用自身的函数,但是必须满足以下两个
条件:
1)在每一次调用自身时,必须是更接近于最终结果;
2)必须有一个确定的递归终止条件,不会造成死循环。
举例说明:
在实际工作中往往会在遍历文件夹的时候使用。
如果有个例子是希望获取到目录 windows 下所有的文件,那 么先遍历 windows 目录,如果发现其中还有文件夹,那么就
会调用自身,继续往下寻找,依次类推,
直到遍历到再也没有文件夹为止,这也就是意味着遍历出来
了所有的文件。

 

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

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

 

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

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

 

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

include 和 require 出现错误后的错误级别不一样
include_once()和 require_once()在加载之前要判断是否已经
导入

 

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

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

 

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

当“a”“b”之间使用.时认为是连字符。如果两者间是+的时 候 php 会认为是一次运算。
1)如果+号两边的字符串是数字组成的,那么会将字符串自
动转为整型;
2)如果+号两边是纯粹的字母,那么会输出0;
3)如果+号两边的字符串是以数字开头的,那么会截取字符
串开头的数字,然后进行运算。

 

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

根据一个表达式的结果在另两个表达式中选择一个。
例如:($a==true)?'good':'bad';

 

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

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 强大,只能终止本次循环而进入到下一

次循环中。

 

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

数组是一个可以存储一组或一系列数值的变量(复合型变
量)
索引数组(索引值为数字,以0开始)和关联数组(以字符
串作为索引值)
数组的赋值方式有哪两种?
数组的声明方式主要有两种。
1.通过 array()函数声明数组;
可以通过 key=>value 的方式分别定义索引和值,也可以不定
义数组的索引下标,只给出数组的元素值。
2.直接为数组元素赋值,不需要调用 array()函数。例如:
$arr[0]=1; $arr[1]=2;
特别注意:
数组的下标如果是等价于整数的字符串值(但不能以0开
头),则会被当作整数对待。
例如: $array[3] 与 $array['3'] 引用的是相同的一个元素,
而 $array['03'] 引用的则就是另外的一个元素了。

 

31.数组如何遍历?

①for 循环

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

③list each 和 while 配合起来循环

 

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

当 foreach 开始执行的时候,数组内部的指针会自动指向第 一个单元。因为 foreach 所操作的是指定数组的拷贝,而不 是该数组本身。而 each()一个数组后,数组指针将停留在数
组中的下一个单元或者碰到数组结尾时停留在最后一个单 元。如果要再次使用 each()遍历数组,必须要使用 reset().
reset()将数组的内部指针倒回到第一个单元并返回第一个数
组单元的值。

 

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

count()-- 计算数组中的元素个数。
可以使用 count(数组名)或者 count(数组名,1),如果有第二个 参数,并且是数字1,则表示递归统计数组元素的个数。如 果第二个参数是数字0,则等同于只有一个参数的 count()函
数。
sizeof()--count() 的别名(count — 计算数组中的单元数目
或对象中的属性个数)
字符串:strlen()— 获取字符串长度
mb_strlen()—Getstringlength

 

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

1) count --(sizeof 别名)— 计算数组中的单元数目或对
象中的属性个数
例如:intcount(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]) — 对数组按照值
排序,当本函数结束时数组单元将被从最低到最高重新安
排。

 

35. 数组合并函数 array_merge()和数组加法运算$arr + $arr2 的区别是什么?

array_merge()->使用 array_merge(),如果是关联数组合并,
如果数组的键名相同,那么后面的值将覆盖前者;如果是数 字索引数组合并,则不覆盖,而是后者附加到前者后面。"+"-> 使用数组加法运算,与 array_merge()不同,加法运算不管
是关联数组还是数字索引数组,都是将相同键名的的值舍
弃,也就是只保留首次出现该键名的元素,后来的具有相同
键名的元素都不会被加进来。

本文来自:CSDN博客

感谢作者:ruziwang

查看原文:PHP常见知识点总结<一>

54 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet