PHP学习笔记

Posted on 2017-04-23 11:26  差不多~勇哥  阅读(321)  评论(0)    收藏  举报

<?php

$a = 5;

$b = 6;

echo $a+$b;

?>

结果是:11.

 

函数:

1. gettype - 获取变量的类型。

 2. settype ($a,"string"); - 设置一个变量类型。

3. empty  - 检查一个变量的值是否为空。

4. intval  - 获取变量的整数值。 floatval(浮点值) strval(字符串值)

5.isset - 判断变量是否设置。

6. unset - 销毁变量。

7. is_integer ( is_int) 的别名. 判断是否为整型。如果是返回true 1;如果不是则返回false 0或是空。

8. is_numeric - 检测变量是否为数字或数字字符串。

9. is_double (is_float) 的别名- 检测变量是否是浮点型。

10. is_string  - 检测变量是否是字符串。

11. rand  - 产生一个随机整数。

12. mt_rand - 生成更好的随机数。

13. getrandmax - 显示随机数最大的可能值。

14. mt_getrandmax - 显示随机数的最大可能值。

15. number_format - 以千位分隔符方式格式化一个数字。

16. array - 新建一个数组。

17. print_r - 打印关于变量的易于理解的信息。

18. range - 建立一个包含指定范围单元的数组。

19. count ( sizeof ) 别名 - 计算数组中的单元数目或对象中的属性个数。

20. is_array - 检测变量是否是数组。

21. each - 返回数组中当前的键/值对并将数组指针向前移动一步。

22. list - 把数组中的值赋给一些变量。

23. reset - 将数组的内部指针指向第一个单元。

24. array_unique - 移除数组中重复的值。

25. array_flip - 交换数组中的键和值。

26. sort - 对数组排序。

27. asort - 对数组进行排序并保持索引关系。

28. arsort - 对数组进行逆向排序并保持索引关系。

29. krsort - 对数组按照键名逆向排序。

30. ksort - 对数组按照键名排序。

31. rsort - 对数组逆向排序。

32. shuffle - 将数组打乱。

33. array_reverse - 返回一个单元顺序相反的数组。

34. array_unshift - 在数组开头插入一个或多个单元。

35. array_push - 将一个或多个单元压入数组的末尾(入栈)。

36. array_pop - 将数组最后一个单元弹出(出栈)。

37. array_rand - 从数组中随机取出一个或多个单元。

38. current (pos )别名- 返回数组中的当前单元。

39. next - 将数组中的内部指针向前移动一位。

40. prev - 将数组的内部指针倒回一位。

41. array_count_values - 统计数组中所有的值出现的次数。

42. extract - 从数组中将变量导入到当前的符号表。

43 .basename - 返回路径中的文件名部分。

44. dirname - 返回路径中的目录部分。

45. pathinfo - 返回文件路径的信息。

46. realpath - 返回规范化的绝对路径名。

47. filesize - 取得文件大小。

48. round - 对浮点数进行四舍五入。

49.disk_free_space (diskfreespace)别名- 返回目录中的可用空间。

50. disk_total_space - 返回一个目录的磁盘总大小。

 51. fileatime - 取得文件的上次访问时间。

52. filectime - 取得文件的 inode 修改时间。

53. filemtime - 取得文件修改时间。

54. date - 格式化一个本地时间/日期。

55. date_default_timezone_set - 设定用于一个脚本中所有日期时间函数的默认时区。

56. fopen - 打开文件或者 URL。

57 .fclose - 关闭一个已打开的文件指针。

58. fwrite - 写入文件(可安全用于二进制文件)。

59. strlen - 获取字符串长度。

60. file_put_contents - 将一个字符串写入文件。

61. fgetc - 从文件指针中读取字符。

62. fgets - 从文件指针中读取一行。

63. fgetss - 从文件指针中读取一行并过滤掉 HTML 标记。

64. fread - 读取文件(可安全用于二进制文件)。

65. fpassthru - 输出文件指针处的所有剩余数据。

66. file - 把整个文件读入一个数组中。

67. readfile - 输出文件。

68. file_get_contents - 将整个文件读入一个字符串。

69. feof - 测试文件指针是否到了文件结束的位置。

70. file_exists - 检查文件或目录是否存在。

71. unlink - 删除文件。

72. rewind - 倒回文件指针的位置。

73. fseek - 在文件指针中定位。

74. ftell - 返回文件指针读/写的位置。

75. flock - 轻便的咨询文件锁定。

76. opendir - 打开目录句柄。

77. closedir - 关闭目录句柄。

78. readdir - 从目录句柄中读取条目。

79. scandir - 列出指定路径中的文件和目录。

80. rmdir - 删除目录。

81. rename - 重命名一个文件或目录。

82. md5 - 计算字符串的 MD5 散列值(对字符串进行加密处理)。

83. sha1 - 计算字符串的 sha1 散列值。

84. include (require) - include 语句包含并运行指定文件。

85. ltrim - 删除字符串开头的空白字符(或其他字符)。

86. rtrim (chop) - 别名-- 删除字符串末端的空白字符(或者其他字符)。

87. trim - 去除字符串首尾处的空白字符(或者其他字符)。

88. nl2br - 在字符串所有新行之前插入 HTML 换行标记。

89. htmlentities - Convert all applicable characters to HTML entities.将字符转换为 HTML 转义字符。

90. htmlspecialchars - Convert special characters to HTML entities.将特殊字符转换为HTML实体。

91. htmlspecialchars_decode - 将特殊的 HTML 实体转换回普通字符。

92. addslashes - 使用反斜线引用字符串。

93.strip_tags - 从字符串中去除 HTML 和 PHP 标记。

94. stripcslashes - 反引用一个使用 addcslashes 转义的字符串。

95. strtoupper - 将字符串转化为大写。

96. strtolower - 将字符串转化为小写。

97. ucfirst - 将字符串的首字母转换为大写。

98. ucwords - 将字符串中每个单词的首字母转换为大写。

99. str_pad - 使用另一个字符串填充字符串为指定长度。

100. explode - 使用一个字符串分割另一个字符串。

101. implode (join)-implode的别名。- 将一个一维数组的值转化为字符串。

102. strtok - 标记分割字符串。

103. substr - 返回字符串的子串。取部分字符串。

104. str_split - 将字符串转换为数组

105. strrev - 反转字符串。

106. strcmp - 二进制安全字符串比较。

107. strncmp - 二进制安全比较字符串开头的若干个字符。

108. strnatcmp - 使用自然排序算法比较字符串。

109. strnatcasecmp - 使用“自然顺序”算法比较字符串(不区分大小写)。

110. strcasecmp - 二进制安全比较字符串(不区分大小写)。

111. strncasecmp - 二进制安全比较字符串开头的若干个字符(不区分大小写)。

112. strspn - 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。

113. substr_count - 计算字串出现的次数。

114. strstr (strchr)别名- 查找字符串的首次出现。(字符串从第一次出现的位置开始到结尾的字符串)。

115. stristr - 函数的忽略大小写版本。

116. strpos - 查找字符串首次出现的位置。 

117. strripos - 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)。

118. strrpos - 计算指定字符串在目标字符串中最后一次出现的位置。

119. str_replace - 字字符串替换。

120. str_ireplace - 字符串替换(不区分大小写)。

121. substr_replace - 替换字符串的子串。

122. preg_match - 执行一个正则表达式匹配。

123. preg_match_all - 执行一个全局正则表达式匹配。

124. preg_grep - 返回匹配模式的数组条目。

125. preg_quote - 转义正则表达式字符。

126. preg_replace - 执行一个正则表达式的搜索和替换。

127. preg_replace_callback - 执行一个正则表达式搜索并且使用一个回调进行替换。

128. preg_split - 通过一个正则表达式分隔字符串。

129. checkdate - 验证一个格里高里日期。

130. date - 格式化一个本地时间/日期。

131. gettimeofday - 取得当前时间。

132. microtime - 返回当前 Unix 时间戳和微秒数。

133. getdate - 取得日期/时间信息。

134. time - 返回当前的 Unix 时间戳。

135. mktime - 取得一个日期的 Unix 时间戳。

136. strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳。

137. getlastmod - 获取页面最后修改的时间。

138. putenv - 设置环境变量的值。

139. date_default_timezone_get - 取得一个脚本中所有日期时间函数所使用的默认时区。

140. date_default_timezone_set - 设定用于一个脚本中所有日期时间函数的默认时区。

141. localtime - 取得本地时间。

142. header - 发送原生 HTTP 头。(发送HTTP协议的标头到浏览器)。

143. ob_start - 打开输出控制缓冲。

144. htmlspecialchars - Convert special characters to HTML entities.(将特殊字符转换为HTML实体)。

145. setcookie - Send a cookie.(发送 Cookie)。

146. session_start - 启动新会话或者重用现有会话。

147. session_unset - 释放所有的会话变量。

148. session_destroy - 销毁一个会话中的全部数据。

 149. is_uploaded_file - 判断文件是否是通过 HTTP POST 上传的。

150. move_uploaded_file - 将上传的文件移动到新位置。

 

全局变量:

 

1. $GOLBALS  所有全局变量数组。

2. $_SERVER  服务器环境变量数组。

3. $_GET         通过GET方法传递给脚本变量的数组。

4. $_POST       通过POST方法传递给脚本变量的数组。

$_COOKIE      cookie变量数组。

5. $_FILE        与文件上传相关的变量数组。

6. $_ENV         环境变量数组。

7. $_REQUEST 所有用户输入的变量数组。

8. $_SESSOIN  会话变量数组。

9. 常量define('NAME',value):一旦被定义之后就不能再次更改了!

 

运算符

①简单运算

1. +-*/

2. %   取余!

 

②复合运算符

1. $a+ = $b; //$a = $a+$b;

2. $a = ++$b;//$b = $b+1;

 

③比较运算符

1. == 等于

2. != 不等于

3. === 恒等

4.!== 不恒等

 

④逻辑运算符

1. ! 非(否)

2. && 并且(和 与) 真(ture)和空(false)在一起,返回的是空(false)。

3. || 或   只有一个是真(ture),则返回真(ture)。

 

⑤三元运算符

Condition(条件) ? 'value if true(真)' : 'value if false(假)';

 

例:

$total = 80;

$sum = $total>50 ? '成功' : '失败';

echo=$sum;

结果是小于80,所以返回的是成功。

 

⑥错误抑制操作符@

不能确定后面一段一定是正解的,需要在前面加上@操作符。

 

例

 $a = @(57/0);

 除数不能为0,会出错,所以加上@避免出现错误警告。

 

条件判断语句


① if条件判断语句有3种:

 

1. if(条件判断){

//......

}

 

2. if(条件判断){

//....

}

 else{ 

//....

}

 

3. 多重线路(不常用)

if(条件判断){

 //... 

}

elseif{

//...

}

elseif{

//....
}

else{

//....

}

 

② swich条件判断语句(不常用)

多重线路,swich比if……elseif……else更简介明了!

 witch(变量){

case"值1":

//...

break;
case"值2":

//...

break;

case"值N":

//...
break;

default:

//....

break;

 

循环

① while循环

while(条件){

//....

}

 

②for循环

for(初始值;条件;计数器){

//....

}

 

③dowhile循环(不常用)

 do{ 

//...

 }while(条件);

 

如果希望停止一段代码的执行,根据所需要达到的效果不同,可以有3种方法实现。

 

1. break; 退出当前循环。

2. exit;退出整个程序。

3. continue;退出当前循环继续下次循环。  

if(条件)

{

break;// exit;//continue;

}

 

改变数组的值

例: 

$usernames[0] = '差不多~勇哥' ;

 echo $usernames[0];

 print_r($usernames);

 

使用循环访问数组

 $usernames = array ('许晓勇','董青','董璞','董莉','董武');

for ($i=0; $i<5; $i++){

echo ($i+1).'---'.$usernames[$i];

echo '<br />';

}

 

自定义键数组

 $username=array('baidu'=>'李彦宏','taobao'=>'马云','360'=>'周鸿祎');

echo $username['360'];

 

使用循环语句:因为相关数组的索引不是数字,因此无法使用for循环语句中使用一个

简单的计数器对数组进行操作。但是可以使用foreach循环或list()和each()结构。

 

$username=array('baidu'=>'李彦宏','taobao'=>'马云','360'=>'周鸿祎');
echo $username['360'];
$userages['许晓勇']=34;
$userages['董青']=31;
$userages['董莉']=35;
$userages['董璞']=32;
foreach ($userages as $key=> $value){
echo $key.'--- '.$value.'岁' .'<br />';
}

 

使用each()结构打印$username数组的内容:each()函数返回数组的当前元素,并将下一个元

素作为当前元素。

 $usernames = array ('许晓勇'=>34,'董青'=>31,'董璞'=>32,'董莉'=>35,'董武'=>27);

while(!!$a=each($usernames){

echo$a["key"].'---.$a['value'].'岁'.'<br />';

} 

 

使用list()函数,可以用来将一个数组分解为一系列的值。可以按照如下方式将函数

each()返回的两个值分开:

$userages = array ('许晓勇'=>34,'董青'=>31,'董璞'=>32,'董莉'=>35,'董武'=>27);

list($name,$age)=each($userages);

 

数组里的数组

 

①无(产品、数量、价格)

$products=array(

array('苹果',6,28.8),

array('猪肉',2,32.1),

array('饼干',3,45.3)
);
echo '|'.$products[0][0].'|'.$products[0][1].'|'.$products[0][2].'|'.'<br />';
echo '|'.$products[1][0].'|'.$products[1][1].'|'.$products[1][2].'|'.'<br />';
echo '|'.$products[2][0].'|'.$products[2][1].'|'.$products[2][2].'|'.'<br />';

 

双重循环

for ($i=0;$i<count($products);$i++){

for ($j=0;$j<count($products[$i]);$j++){

echo $products[$i][$j]. '|';

}echo '<br />';
}

 ②有(产品、数量、价格)

 $products=array(

array('产品名'=> '苹果','数量'=>6,'价格'=>28.8),
array('产品名'=> '猪肉','数量'=>2,'价格'=>32.1),
array('产品名'=> '饼干','数量'=>3,'价格'=>45.3)
);

 

 ㈠foreach循环

for ($i=0;$i<count($products);$i++){

oreach ($products[$i] as $key=>$value){

echo $key.'---'.$value.'|';
}
echo '<br />';
}

 ㈡ilist each循环

 for ($i=0;$i<count($products);$i++){

while (!!list($key,$value)=each($products[$i])){

echo $key.'--'.$value.'|';

}
echo '<br />';
}

 

数组的排序

 bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

可选的第二个参数 sort_flags 可以用以下值改变排序的行为:

 

排序类型标记:

  • SORT_REGULAR - 正常比较单元(不改变类型)
  • SORT_NUMERIC - 单元被作为数字来比较
  • SORT_STRING - 单元被作为字符串来比较
  • SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
  • SORT_NATURAL - 和 natsort() 类似对每个单元以"自然的顺序"对字符串进行排序。 PHP 5.4.0 中新增的。
  • SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。

 

资源类型(resource) 

 

文件处理

 

将数据写入一个文件,有3个步骤:

 1.打开这个文件。如果文件不存在,需要先创建它。

 2.将数据写入这个文件。 

3.关闭这个文件。

同样,从一个文件中读出数据,也有3个步骤:

1.打开这个文件。如果这个文件不能打开,就应该意识到这一点并且正确地退出。

2.从文件中读出数据。

3.关闭这个文件。

要在PHP中打开一个文件,可以使用fopen()函数。当打开一个文件的时候,还需要指

定如何使用它。也就是,文件模式。

选择文件模式:当打开一个文件的时候,有3中选择:

1.打开文件为了只读、只写或者读和写。

2.如果要写一个文件,你可能希望覆盖所有已有的文件内容,或者仅仅将新数据追加到

文件末尾。如果该文件已经存在,也可以终止程序的执行而不是覆盖该文件。

3.如果希望在一个区分了二进制方式和纯文本方式的系统上写一个文件,还必须制定采用的方式。

 

 

 


文件锁定

假设两个客户试图同时订购同一件商品。那么他们同时打开了这个文件,同时的更新,

就会出现少一个客户订购的数据。

为了避免这样的问题,可以使用文件锁定的方法。

 

 

 

自定义函数 FUNCTION

PHP内置函数允许和文件进行交互、使用数据库、创建图形,还可以连接其他的服务 器。但是,在实际工作中,有许多时候所需要的东西是语言的创建者无法预见到的。

声明一个函数可以让我们想内置函数那样使用自己的代码。只要简单地调用这个函数并提供给它必须的参数。这就意味着,在整个脚本中,都可以调用和多次重复使用相同的函数。

 

 创建函数 

<?php

function functionName() {

echo'这是一个无参无返回自定义函数';

}

?>

调用函数

<?

functionName();

?>

 

函数命名

 

1.函数名不能和已有的函数名重名。

2.函数名只能包含字母、数字和下划线。
3.函数名不能以数字开头。

包含参数无返回的函数调用

<?php

function functionArea($radius){
$area=$radius*$radius*pi();

echo $area;

}

functionArea(10);
?>

 

 包含参数有返回的函数调用:使用return()语句可以向函数调用者返回任意确定值,将程序控制权返回到调用者的作用域。

<? php
function functionarea($radius){

$area=$radius*$radius*pi();

return $area;
}

 echo 'R半径为:10的面积是:'.functionarea(10);

 ?>

 

包含默认参数的函数调用:可以为输入参数指定默认值,在没有提供其他值的情况下,

就会把这个默认值自动赋给该参数。

<? php
function functionArea($radius=10){

$area=$radius* $radius* pi();

return $area;

 }

echo functionArea();
?>

 

 

返回多个值的函数调用:可以通过返回一个数组然后使用list()函数构造即可。

<?php

function functioninfo($name,$age,$job){
$userinfo=array($name,$age,$job);
return $userinfo;
}
list($name,$age,$job)= functioninfo('董青','31','手绘师');

 echo $name.'今年'.$age.'岁了,她是个'.$job;

?>

 

注:上面的方式还是不太灵活,下面这个方式很灵活比较常用。建议推荐使用!

 <?php

function functioninfo($name,$age,$job){
$userinfo[]=$name;
$userinfo[]=$age;
$userinfo[]=$job;
return $userinfo;
}
list($name,$age,$job)= functioninfo('许晓勇','34','程序员');
echo $name.'今年'.$age.'岁了,她是个'.$job;

?>

 

包含引用传参的函数调用:引用传递可以在函数内对参数的修改在函数范围外也能反应。

<?

$prices=50;

$tax=0.5;

function functionPrices(&$prices,$tax){

$prices=$prices+($prices*$tax);

$tax=$tax*2;

}

functionPrices($prices,$tax);

echo $prices;

echo '<br/>';

echo $tax;

?>

 

请注意,函数调用将不区分大小写,所以调用 functionname()、FunctionName()或FUNCTIOINNAME()都是有效的,而且都将返回相同的结果。为了方便,这里都用小写。

注意到函数名称和变量名称是不同的,这一点很重要。变量名是区分大小写的,所以$Name和$name是两个不同的变量,但Name()和name()则是同一个函数。

 

理解作用域

变量的作用域可以控制变量在哪里是可见并且可用的。不同的编程语言有不同的变量作用域规则。

 

PHP具有相当简单的规则:

在函数内部声明的变量作用与是从声明它们的那条语句开始到函数末尾。这叫做函数作用域。这些变量成为局部变量。 

在函数外部声明的变量作用域是从声明它们的那条语句开始到文件末尾,而不是函数内部。这叫做全局作用域。这些变量成为全局变量。

特殊的超级全局变量在函数内外部都是可见的。使用require()和include()并不影响作用域。如果这两个语句用于函数内部,函数作用域适用。如果它不在函数内部,全局作用域适用。 

关键字“global”可以用来手动指定一个在函数中定义或使用的变量具有全局作用域。

通过调用unset($variable_name)可以手动删除变量。如果变量被删除,它就不在参数所指定的作用域中了。

 

 

全局变量定义global

<?php

$a=5;

function fa(){

global $a;

$a=2;

}
fa();
echo $a;

可以通过使用超级全局变量$GLOBAL,可以访问或改变全局作用域中的任何变量。

 

<?php

 $GLOBALS['a']=5;

 function fa(){

$GLOBALS['a']=20;

 }

 fa();

 echo$GLOBALS['a'];

 ?>

 

魔法常量

 PHP实现了一些所谓的魔法常量,他们并不真的是常量,因为这些魔法常量会根据使用的场合改变值。

 

正则表达式

正则表达式中的元素:正则表达式中包含三种元素分别为:量词、元字符、修饰符 


 

表单接受及验证数据

 

session_unset