PHP从入门到精通 读书笔记

扩展库
(在使用时,需要修改extension_dir设置以指向用户放置扩展库的目录或者放置php_*.dll文件的位置,例如:extension_dir=C:\php\extensions)
(要在php.ini中启用某扩展库,需要去掉extension=php_*.dll前的注释符号,即将需要加载的扩展库前的分号删除)    

字符串操作
字符串之间进行比较的操作应用如下:
使用stacmp()函数在用户登录系统中输入的用户名和密码是否正确,如果在验证用户名和密码时不使用此函数,那么输入的用户名和密码无论大写还是小写,只要正确登录即可,使用了strcmp函数就避免了这种情况,,即使正确,也必须大小写匹配才能登录,增加了网络登录的安全性.

正则表达式:正则表达式是区分大小写的
一个完整的正则表达式由两部分组成:元字符和文本字符( 元字符就是具有特殊含义的文本字符; 文本字符就是普通的文本) 
行定位符 (^ 和 & ):行定位符就是用来描述字串的边界."^"表示行的开始;"&"表示行的结尾;
单词定界符( \b;\B):   \bxx\b用来查找限定为xx的字符串,而\B\B则是完全与\b\b相反的意思;
字符类([ ]):如果要忽略大小写,可以使用"[ ]",只要匹配的字符出现在方括号里,但要注意,一个方括号只能匹配一个字符!
选择字符( | ):该字符可以理解为"或";
连字符( - ):连字符可以表示字符的范围;
排除字符( [^] ):例如[^a-zA-Z]:该表达式就是不以字母或下划线开头的变量名;
限定符( ?*+{ n , m } ):
限定符主要有六种: ? ->匹配字符的前面零次或一次        
         如:colou?r            该表达式可以匹配colour和color;
                             + ->匹配前面的字符一次或多次                 如:go+gle            该表达式可以匹配的范围是gogle到goo....gle;
                              * ->匹配前面的字符零次或多次                 如:go*gle             该表达式可以匹配的范围是ggle到goo...gle;
                            {n}->匹配前面的字符n次                             如:go{2}gle          该表达式只匹配google;
                            {n,}->匹配前面的字符至少n次                     如:go{2,}gle          该表达式可以匹配的范围是google到goo...gle;
                         {n,m}->匹配前面的字符至少n次,最多m次      如:employee{0,2}  该表达式可以匹配的是employy;employe;employee;
点号字符( . ):" . "字符可以匹配出换行符以外的任意字符;
转义字符( \ ):

表单
Get方法:是将表单内容附加在url地址后面发送
Post方法: 是将表单中的信息作为一个数据块发送到服务器上进行处理,在浏览器的地址栏中不显示提交的信息     
method属性 默认方法为 GET 方法

表单(form)由表单元素组成,常用的几种表单元素:
输入域标记<input>
        <input type="">一共提供了10中类型的输入域
                              text-----------------添加一个文本框
                              password-----------添加一个密码域
                              file------------------添加一个文件域            注:上传文件时,需要指明表单的属性enctype="multipart/form-data"
                              image---------------添加一个图像域           注:这幅图片具有按钮的功能
                              radio----------------添加一组单选按钮        注:checked属性用来设置该单选按钮默认被选中
                              checkbox-----------添加一组复选框           注:checked属性用来设置该单选按钮默认被选中
                               submit--------------添加一个提交按钮        注:将表单的内容提交到服务器
                              reset-----------------添加一个重置按钮       
                              button---------------添加一个普通按钮       注:一般配合javascript脚本进行表单处理
                              hidden---------------添加一个隐藏域         注:用于在表单中以隐含方式提交变量值,隐藏域在页面中对于用户是不可见的
                                                                                                      添加隐藏域的目的在于通过隐藏的方式收集或者发送信息,浏览者单击"发                                                                                                                 
                                                                                                      送"按钮发送表单时,隐藏的信息也一起发送到action指定的处理页

选择域标记<select>和<option>
        列表方式:
        菜单方式(select标记内有multiple属性):

文字域标记<textarea>

php参数传递的方法有三种:
$_POST[]------------------------------用于获取表单   区分表单元素大小写
        <?php
                $user=$POST["user"];
        ?>
&_GET[]-------------------------------用于获取URL   区分表单元素大小写
        <?php
                $user=$GET["user"];
        ?>
$_SESSION[]--------------------------用于获取Session变量的值    获取到的变量值保存之后,任何页面都可以使用   //很耗费x系统资源
        <?php
                $user=$SESSION["user"];
        ?>

Web页中嵌入PHP脚本

在web页中插入php脚本的方法有两种:
1.直接在html标记中添加<?php ?>PHP标记符
2.对表单元素的value属性进行赋值

在PHP中获取表单数据
添加所有控件必须添加name属性,控件命名上尽量不要重复

      PHP与JavaScript交互
javascript主要有四种基本类型:
    字符串型:
    数值型:
    布尔型:
    对象型:
    
    Null值:
    Undefined:

PHP   遍历数组
1.使用foreach()结构遍历数组:foreach结构并非操作数组本身,而是操作数组的一个备份
2.使用list()函数遍历数组:list()的函数只能用于数字索引的数组,且数字索引从0开始
说明:each()函数用于返回当前指针位置的数组值,并将指针推进一个位置,

PHP   字符串与数组的转换
1.使用exlpode()函数讲字符串转换成数组
explode函数讲字符串依指定的字符串或字符separator分开
语法格式 : array explode(string separator , string string , [int limit])
2.使用implode()函数将数组转换成一个新字符串
语法格式:string implode(string glue , array pieces)      //参数glue是字符串类型,指要传入的分隔符;参数pieces是字符串类型,指传入的要合并元素的数组变量名称

PHP   统计数组元素个数
使用count()函数
语法格式: int count(mixed array [ , int mode ]
在统计二维数组时,如果直接使用count()函数只会显示到一维数组的个数,所以使用递归的方式来统计二维数组的个数

PHP   查询数组中指定元素
array_search()函数,在数组中搜索给定的值,找到后返回键名,否则返回false
语法格式:mixed array_search(mixed needle,array haystack [,bool strict])
array_search()函数最常见的应用是购物车,实现对购物车中的指定的商品数量的修改和删除

PHP isset和unset
isset-- 检测变量是否设置
描述:
bool isset(mixed var [,mixed var [,...]])
如果var存在则返回TRUE,否则返回false.
如果已经使用unset()释放了一个变量之后,它将不再是isset().若使用isset()测试一个被设置成NULL的 变量,将返回FALSE.
同时要注意的是一个NULL字节("\0")并不等同于PHP的NULL常数.

警告:isset()只能用于变量,因为传递任何其他参数都将造成解析错误,若想检测常量是否已设值,可使用defined()函数.
更多说明:使用unset()释放变量后,它将不再是isset();
PHP函数isset()只能用于变量,传递任何其他参数都将造成解析错误;
检测常量是否已经设置可使用defined()函数

unset()-- 销毁指定的变量.
注意在php3中,unset()将返回TRUE(实际上是整数型值1),而在php4中,unset()不再是一个真正的函数:他现在是一个语句.这样就没有了返回值,试图获取unset()的返回值将导致解析错误

PHP empty()和isset()区别
        两者都是变量处理函数,都用来判断变量是否已经配置;
区别:empty还会检测变量是否为空,为零-------------------当一个变量值为0,empty()认为这个变量等同于空,即相当于没有设置

PHP传值和传引用的区别:
传   值: 是把实参的值赋值给形参,那么对形参的修改,是不会影响实参的值
传引用: 真正的以地址的方式传递参数以后,形参和实参都是同一个对象,只是他们的名字不同而已,对形参的修改 将影响实参的值

说    明: 
传   值: 跟copy是一样的,就像我有一幢房子,我给你建筑材料,你建了一个跟我一样的房子,你在你的房子做什么事也不会影响到你,彼此独立
传引用: 跟c语言的指针差不多,打个比方.我有一幢房子,我给你一把钥匙,我们两个都可以进入这个房子,你在房子里做什么都会影响到我.           

正则表达式验证电子邮件格式的正确性:
I.
$regex = '/^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[-_a-z0-9][-_a-z0-9]*\.)*(?:[a-z0-9][-a-z0-9]{0,62})\.(?:(?:[a-z]{2}\.)?[a-z]{2,})$/i';
$str='test@test.com';
if(preg_match($regex,$str)
{
echo '电子邮件格式正确';
}
II.

function CheckMailAdr($str)      //电子邮件验证函数

{

   return(eregi(“^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$”,$str));

}

PHP四种基础算法
        $arr(1,43,54,62,21,66,32,78,36,76,39)    递增排序
冒泡排序法:
   思路分析: 每次从数组当中冒一个最大的数出来
          比如: 2,4,1     //第一次冒出的泡是4
                   2,1,4     //第二次冒出的泡是2
                   1,2,4     //结束
$arr(1,43,54,62,21,66,32,78,36,76,39);
$len=count($arr);
function BubbleSort($arr)
{     
    //设置一个空数组,用来接收冒出来的泡
    //该层循环控制,需要冒泡的轮数
    for($i=0;$i<$len;$i++)
    {
        //该层循环用来控制每轮 冒出一个数 需要比较的次数
        for($k=0;$k<$len-$i;$k++)
        {
            if($arr[$k]>$arr[k+1])
            {
                $tmp=$arr[$k+1];
                $arr[$k+1]=$arr[$k];
                $arr[$k]=$tmp;
            }
        }
    }
return $arr;
}

选择排序法:
   思路分析: 每次选择一个相应的元素,然后将其放到指定的位置
function SelectSort($arr)
{
    //实现思路  双重循环完成,外层控制轮数,当前的最小值. 内层控制的是比较次数
    //$i当前的最小值位置,需要参与比较的元素
    for($i=0,$i<$len-1;$i++)
    {
        //先假设最小值的位置
        $p=$i;
        //$j 当前都需要和哪些元素比较,$i后边的.
        for($j=$i+1,$j<$len;$j++)
        {
            //$arr[$p]是当前已知的最小值
            if($arr[$p]>$arr[$j])
            {
                //比较,发现更小的,记录下最小值得位置;并且在下次比较时,应该采用已知的最小值进行比较
                $p=$j;
            }
        }
        //已经确定了当前的最小值的位置,保存到$p中
        //如果发现 最小值的位置与当前的假设位置$i不同,则位置互换即可
        if($p!=$i)
        {
            $tmp=$arr[$p];
            $arr[$p]=$arr[$i];
            $arr[$i]=tmp;
        }
    }
    //返回最终结果
    return $arr;
}

插入排序法:
   思路分析: 将要排序的元素插入到已经嘉定排序好的数组指定位置
function InsertSort($arr)
{
    //区分 哪部分是已经排序好的
    //哪部分是没有排序的
    //找到其中一个需要排序的元素
    //这个元素就是从第二个元素开始,到最后一个元素都是这个需要排序的元素
    //利用循环控制就可以标识出来
    //i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了
    //间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列
    for($i=1;$i<$len;$i++)
    {
        //获得当前需要比较的元素值
        $tmp=$arr[$i];
        //内层循环控制 比较 并 插入
        for($j=$i-1;$j>=0;$j--)
        {
            //$arr[$i];需要插入的元素;$arr[$j];需要比较的元素
            if($tmp<$arr[$j])
            {
                //发现插入的元素要小,交换位置
                //将后面的元素与前面的元素互换
                $arr[$j+1]=$arr[$j];
                //将前面的数设置为 当前需要交换的数
                $arr[$i]=$tmp;
            }
            else
            {
                //如果碰到不需要移动的元素
                //由于是已经排序好的数组,则前面的就不需要再次比较了
                break;
            }
        }
    }
    //将这个元素 插入到已经排序好的序列内
    //返回
    return $arr;

快速排序法:
function QuickSort($arr)
{
    //先判断是否需要继续执行
    if($len<=1)
    {
        return $arr;
    }
    //如果没有返回,说明数组内的元素个数  多余1个,需要排序
    //选择一个标尺
    //选择第一个元素
    $base_num=$arr[0];
    //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
    //初始化两个数组
    $left_array=aray(); //小于标尺的
    $right_array=array(); //大于标尺的
    for($i=1;$i<$len;$i++)
    {
        if($base_num>$arr[i])
        {
            //放入左边数组
            $left_array[]=$arr[$i];
        }
        else
        {
            //放入右边
            $right_array[]=$arr[$i];
        }
    }
    //再分别对左边和右边的数组进行相同的排序处理方式
    //递归调用这个函数,并记录结果
    $left_array=QuickSort( $left_array);
    $right_array=QuickSort( $right_array);
    //合并左边 标尺 右边
    return array_merge( $left_array,array);
}
















  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值