PHP从入门到精通——读书笔记(1-5章:语言基础,流程控制,字符串操作等)

第一、二章:初识PHP、PHP环境搭建和开发工具

1:Windows下加载扩展库,通过修改php.ini文件来完成。如:

extentsion_dir = c:\php\extensions
;extension = php_bz2.dll

2:Zend Studio——需要付费,速度慢

第三章:PHP语言基础

1:四种标记风格:

<?php
    echo "这是xml风格标记"
?>

<script language="php">
    echo '这是脚本风格标记'
</script>


<? echo '这是简短风格标记' ?>


<%
    echo '这是asp风格标记'
%>

注:如果需要使用简短风格和asp风格,需要在php.ini中配置。打开php.ini文件,将short_open_tag和asp_tags设置为ON
推荐使用xml风格

2:注释://、/* */ 、#shell风格的注释

3:php的数据类型:支持8种原始类型,包括4种标量类型,即boolean(布尔型)、integer(整型)、float/double(浮点型)和string(字符串型);两种复合类型,即array(数组)和object(对象);两种特殊类型即resource(资源)和NULL

注意:在php中部是只有false值才是假,0、0.0、"0"、空白字符串("")、只声明没有赋值的数组等

1)string类型,可以用单引号、双引号和界定符(<<<)来定义。其中单引号和双引号的区别是:
双引号中所包含的变量会自动替换成实际数值,而单引号中包含的变量则按普通字符输出。
另外不同点在于对转义字符的使用。使用单引号时,只要对单引号进行转义,而使用双引号时要注意 "、$ 等字符都要使用"\"转义

\n 和 \r在windows下没什么区别,都可以当做回车符,但Linux中 \n表示换到下一行,却不会回到行首; \r表示光标回到行首,但仍然在本行

2)整型: 八进制,数字前面必须加0,如果是十六进制则需要加0x

3)数组:$array = ('value1', 'value2')  或  $array[key] = 'value'  或$array = array(key1 => value1, key2 => value2....)
key是数组元素的下标,value是数组下标所对应的元素

例:
$arr1 = array('This','is','a','example');
$arr2 = array(0=>'php',1=>'is','the'=>'the','str'=>'best');
$arr3[0] = 'tempname'

4)resource:资源是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函数来建立和使用的

5)类型转换: settype($num, 'integer');

PHP从入门到精通——读书笔记(1-5章:语言基础,流程控制,字符串操作等)_第1张图片

6)常量:define(string constant_name, mixed value, case_sensitive=true)case_大小写敏感
判断一个常量是否已经定义:bool defined(string constant_name);

PHP从入门到精通——读书笔记(1-5章:语言基础,流程控制,字符串操作等)_第2张图片

echo "当前文件路径:".__FILE__; //输出当前文件的路径

7)变量——全局变量:使用global关键字、静态变量——static
可变变量:允许动态改变一个变量的名称。其工作原理是该变量的名称由另外的一个变量的值来确定,实现:在变量前面加“$”
例:
$change_name = "trans";
$trans = "You can see me"
echo $change_name; 
echo $$change_name;
结果:trans    You can see me

8)PHP 预定义变量:

PHP从入门到精通——读书笔记(1-5章:语言基础,流程控制,字符串操作等)_第3张图片

PHP从入门到精通——读书笔记(1-5章:语言基础,流程控制,字符串操作等)_第4张图片

9)错误控制符:@——错误存在,只是不显示

4:php函数

1)定义和调用函数
function fun_name($str1,$str2...){}
2)在函数间传递参数
a:按值传递 function example($m)
b:按引用传递 funtion example(&$m)
参数默认值:function example($price, $tax=""){}//定义一个函数,其中一个参数初始值为空
example(100,0.25)//为可选参数赋值0.25

2)变量函数
function come(){ echo "来了" }
$func = "come" //声明一个变量,将变量赋值为“come”
$func();   //使用变量函数来调用函数come()

3)对函数的引用
引用不仅可以用于函数参数,也可以作用于函数本身——对函数的引用,就是对函数返回结果的引用
function &example($tmp = 0){ return $tmp; } //定义一个函数,加&符
$str = &example("看到了");//声明一个函数的引用$str
echo $str."<p>"; //输出$str——结果:看到了
注意:和参数传递不同,这里必须在两个地方使用&符,用来说明返回的是一个引用

当不需要引用时,可以取消引用。使用unset()函数,它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容

$num = 1234;
$math = &$num;//声明一个对变量$num的引用$math
echo "\$math is: ".$math."<br>";
unset($math); //取消引用$math

5:php 书写规则

1)使用Tab键缩进
2)不要把小括号和关键字紧贴在一起,用空格隔开他们。如: if ($expr)
3)小括号和函数要紧贴在一起
4)运算符与两边的变量或表达式要有一个空格

6:php命名规则:
1)使用大写字母作为词的分隔,其他字母小写
2)名字的首字母使用大写
3)不要使用下划线
4)属性前面应该以 m 为前缀, r 表示引用
5)全局变量带前缀:g
6)常量/全局常量,应该全部大写字母,单词之间使用 _ 分隔
7)静态变量,带前缀 s 
8)函数命名都使用小写字母,多个单词使用 _ 分隔

第四章:流程控制

1:for循环
$sum = 1;
for ($i=1; $i <= 100; $i++){
    $sum *= $i;
}

2:foreach——将遍历数组array_expression,每次循环时,将当前数组中的值赋给$value(或是$key和$value),
同时,数组指针向后移动直到遍历结束。
foreach (array_expression as $value) 或:
foreach (array_expression as $key => $value)
foreach语句将遍历数组array_expression,每次循环时,将当前数组中的值赋给$value(或是$key和$value),同时,数组指针向后移动直到遍历结束。当使用foreach语句时,数组指针将自动被重置,不需要手动设置指针位置

注意:当试图使用foreach语句用于其他数据类型或者未初始化的变量时会产生错误。为避免这个问题,最好使用 is_array()函数先判断变量是否为数组类型。

 

第五章:字符串操作

1:注:双引号中的内容可以被解释并替换,而单引号中的内容则只能被作为普通字符进行处理
在进行SQL查询之前,所有字符串都必须加单引号,以避免可能的注入漏洞和sql错误

2:去除字符串首尾空格和特殊字符
1):trim()函数(ltrim,rtrim)—— trim(string str [,string charlist])// charlist指定需要从指定的字符串中删除哪些字符。不设置则都删除

PHP从入门到精通——读书笔记(1-5章:语言基础,流程控制,字符串操作等)_第5张图片除了以上默认的过滤字符列表外,还可以在charlist参数中提供要过滤的特殊字符
$str = "\r\r(:@_@ 法师打发点发送到 df多福多寿房顶上 @_@:)"
echo trim($str, "\r\r(: :)");//去除字符串左右两边的特殊字符 \r\r(::)

3:转义、还原字符串数据——手动或自动

1)手动转义、还原字符串数据:使用转义字符: \
2)自动转义、还原字符串数据:应用PHP提供的 addslashes()函数和 stripslashes() 函数实现
a:addslashes() 函数用来为字符串加入斜线 “\”
b:stripslashes() 函数用来将 addslashes() 函数转义后的字符串str返回原样

string addslashes(string str, string charlist) //在指定的字符charlist前加上反斜线

注意:所有数据在插入数据库之前,有必要应用 addslashes() 函数进行字符串转义,以免特殊字符未经转义在插入数据库时出现错误

4:获取字符串的长度—— strlen() 函数 : int strlen(str);
注意:汉字占两个字符,数字、英文、小数点、下划线和空格占一个字符

5:截取字符串—— string substr(string str, int start [,int length]);// 如果start为负数,则从字符串末尾开始截取。如果length为负数,则表示取到倒数第length个字符

6:比较字符串
1)按字节进行字符串的比较—— strcmp()、strcasecmp() 函数。区别:前者区分大小写,后者不区分
int strcmp(string str1, string str2) // 相等返回0,如果str1大于str2,返回值大于0,否则小于0

2)按自然排序法进行字符串的比较—— strnatcmp() 函数。自然排序法比较的是字符串中的数字部分,将字符串中的数字按大小进行排序
int strnatcmp ( string str1, string str2) // 本函数区分大小写
注意:在自然运算法则中,2比10小,而在计算机序列中,10比2小,因为“10”的第一个数字是“1”,它小于2

7:检索字符串—— strstr() 函数
1)strstr()  查找指定的关键字:获取指定字符串在另一个字符串中首次出现的位置到后者末尾的子字符串。成功则返回剩余字符串(存在相匹配的字符);否则返回false
string strstr(string haystack, string needle);// haystack:指定从哪个字符串搜索。 needle:指定搜索对象。如果是一个数值,则将搜索与这个数值的ASCII值相匹配的字符
注意:本函数区分大小写
2)使用substr_count() 函数检索子串 出现的次数 —— int substr_count(string haystack, string needle)

8:替换字符串
1)str_ireplace()函数—— mixed str_ireplace (mixed search, mixed replace, mixed subject [, int &count])
将所有在参数subject中出现的参数search 以参数 replace 取代,&count表示取代字符串执行的次数(本函数不区分大小写,如果要对大小写加以区分,可以使用 str_replace() )
2)substr_replace() 函数 —— 对指定字符串中的部分字符串进行替换
  string substr_replace(string str, string repl, int start [,int length])
  str:指定要操作的原始字符串; repl:指定替换后的新字符串; start:指定替换字符串开始的位置。负数表示起始位置从字符串的末尾开始;0表示起始位置从字符串中的第一个字符开始; length:可选,指定返回的字符串长度。默认是整个字符串。正整数表示起始位置从字符串开头开始,负数表示起始位置从字符串的结尾开始; 0 表示插入而非替代。

9:格式化字符串—— number_format()函数用来将数字字符串格式化

10:分割字符串—— explode()函数: array explode(string separator, string str, [int limit])
separator:指定的分割符。如果为空字符串,explode()将返回false,如果separator所包含的值在str中找不到,则返回包含str单个元素的数组;str:指定将要被分割的字符串
$str = "PHP 编程词典@NET 编程词典@ASP编程词典@JSP编程词典";
$str_arr = explode("@", $str);
print_r($str_arr); // print_r 和 echo 区别:前者输出的是一个数组列,而使用echo语句输出的是数组中的元素

11:合成字符串—— implode() 函数 : string implode(string glue, array pieces)
参数glue是字符串类型,指定分隔符。参数pieces是数组类型,指定要被合并的数组

你可能感兴趣的:(读书笔记)