zoukankan      html  css  js  c++  java
  • php学习笔记

    一、字符串
    1.    单引号不能识别插入的变量以及任何转义序列(定义纯字符串用单引号)
    2.    双引号不能识别转义的单引号
    3.    <<< KKK
    KKK;//必须顶格
    这个可以用来输出HTML而无需转义
     
     
     
    二、访问字符串
    1.===(表示等同操作符则false与0不同)而==(表示相等操作符则false与0等价)
    2.strpos函数用于返回一个字符串中要查找的子字符串出现的第一个位置,失败则返回FALSE(用===来判断与false相等)
    3.换行用<br>  不好使
    4. 
    5
    6.$varname=’dd’; $$varname=5;($dd=5)
    7.常量不需要$符号,定义常量define(‘CONTAST’,10);
    echo CONTAST;
    8.算数运算符用于字符串时,会把字符串转换成数字,如果字符串头含有数字则等于该数字,否则为0
    9.有实际值的变量或表达式前加@可抑制错误
    10.反向双引号` `之间的命令当做服务器端的命令来执行,表达式的值就是命令的执行结果
    10.数组遍历:
       a. foreach($arr as $key=>$value)
         echo $key.’==’.$value;
       b. while($arr=each($a))
    //each遍历一次之后数组指针到数组末尾,若想再次访问这个数组需要reset($a)才可以继续遍历
         echo $arr[‘key’].’=’.$arr[‘value’];
    c. $ip=’192.168.1.126’;
    //list只能接受索引数组,数组中的元素个数必须与list参数个数一致且按索引下标的顺序遍历
    list($a,$b,$c,$d)=explode(‘.’,$ip);
    echo $d;
       d. while(list($key,$value)=each($arr))//这种模式比foreach效率高
         echo $key.’=’.$value;
    11.gettype($a)  获取变量a的类型
       settype($a,’type’)   把变量a的类型变为type类型
       isset($a)   判断a变量是否存在
       empty($a)  判断变量a是否为空//isset和empty检查用户正确填写表单
       unset($a)   销毁a变量
    12.exit彻底结束PHP程序
     
    PHP6的新特性:
    这些特性包括:
        集成OpCache(OPcache通过对PHP的opcode进行缓存和优化,可以提高PHP程序的执行速度)
        改善对64位环境的支持
        支持Unicode
        清理内部API
        提升代码质量,做到Warning-Free
        改善OPcodes、编译器、运行时
        JIT编译器(LibJIT?)
        支持Annotation(注解?)
        命名自变量(Named argument)
        不同等级的类型提示
        支持HTTP 2.0协议(可能会使用nghttp2,避免重复造轮)
        可靠、友好的RNG API
        新的Getter/Setter
        C++用法
        新的加密扩展
        捆绑PECL的http库
     
    13.函数可以在声明之前调用也可以在声明之后调用且不分大小写
    14.要想使用全局变量需用global定义该变量且在执行语句之前
     
    fun_num_args() //获取参数个数
    func_get_arg()//获取指定位置的参数的值
    fun_get_args() //获取参数数组(数组为索引数组)
    *想要使用字符串函数最好把字符串全部变成小写的在进行处理
     
     
     
    15.strtok()函数
    <?php
    $string = "Hello world. Beautiful day today.";
    $token = strtok($string, " ");//首次调用时,传入需要分割的字符串
    while ($token !== false)
    {
    echo "$token<br>";
    $token = strtok(" ");//之后就不需要传入所要分割的字符串,因为它知道自己的位置(指针)
    }
    ?>
    16.str_replace(find,replace,search)
    在search中查找find并把search中的find替换为replace
    17.正则表达式
    .表示匹配除( )外的任意一个字符{当在一个字符类的开始或末尾使用.时,它失去了匹配意义仅仅表示符号.} 
    *表示一个模式出现0次或多次 (放在后面)
    +表示一个模式出现至少一次(放在后面)
    ?表示一个子模式为可选
    net|com其中|表示一个选择,匹配net或者com
    ()括弧里的子模式被精确匹配
    {2,}某一个模式重复至少两次
    [^a-z]匹配除了a~z的任意一个字符
    ^[a-z]$匹配只含有小写字母的字符串的一个字符
    PHP正则表达式必须包含在单引号中,如果在双引号引用中使用需要用4个,使用$需要用\$
    匹配标点符号时应在其前加用来转义
    18.分割字符类型一定的字符串用explode,如果分割字符类型不定的字符串用split   //尽量用explode因为效率高于split
    //对于单个可以正则表达式的却选择多个字符串函数是不明智的
    19.被include或require引用的文件命名为.inc.php
    如果希望文件是纯HTML或者文本并不执行PHP代码可以使用readfile()函数
    20.面向对象:
    a. private定义的属性和方法不能被子类继承,protected则可以被继承但是只能在子类内部使用,public被继承后可以在类外使用。子类继承父类后,若对父类的function函数进行了重载覆盖,可使用parent::function()仍可输出父类函数的值。
    b. 类中操作某个属性可以使用$this指针:如$this->attribute;
    c.可以使用__set()和__get()两个函数来检查和设置任何属性的值。
    d.final关键字可以用来禁止方法和类被继承
    e.PHP只允许一个子类继承(extends)一个父类,不允许一个子类继承多个父类(即多重继承),但允许一个父类可以多个子类,但是可以使用接口(implements)来解决这个问题。一个子类只能继承一个父类,但是可以实现多个接口且必须实现接口中指定的方法,否则将出现致命错误。
    21.类中:变量命名全部小写,函数命名使用驼峰首字母大写
    22.const定义常量和static定义静态方法都可以在不初始化对象的情况下就能进行使用(注意,不能再静态方法中使用$this因为该方法可能没有引用的对象的实例)
    A.类中定义常量:const PI=3.14;  访问常量:类名::PI
    B.定义:static function C($input){
              return input*input;
    }
    访问静态方法:echo 类名::C(8);
    23.instanceof可用于检查一个类的类型,是否被继承是否实现了接口
    24.类中定义的函数参数类型如果被指定为B类实例变量,那么参数传值时如果传入了A类实例,将发生错误,但是如果参数类型被指定为A类实例变量且B类继承了A类,那么参数传值如果传了B类实例,则不会发生错误,因为B类继承了A类。
    25.若想使用__call($function,$arr)重载方法,则function方法不必实现也可。
    26.__toString()可用来打印方法返回值
      Reflection()也可用来打印出类的详细信息(间接调用__toString)
      $class=new ReflectionClass(“class”);
      echo ‘<pre>’.$class.‘</pre>’;
    27.一个典型的web服务器运行流程   
     
    28.MySQL数据库权限授予:(操作之间用逗号隔开)
      A. grant all on  *  to 用户名 identified by ‘密码’ with grant option; //授予该用户操作所有数据库的权限
      B. revoke all privileges ,grant from 用户名;   //撤销该用户的所有权限
      C. grant 操作 on 数据库 .* to 用户@localhost identified by ‘密码’;//授权一个用户账号、密码以及对本地数据库的操作(操作为usage时该用户没有任何权限)
    D. revoke 操作 on 数据库 .* from 用户名; //撤销该用户对某一数据库的一些操作
    28.MySQL默认存储引擎MyISAM, 列类型大二进制blob可用于存储图像或声音数据。
     
    SQL语句中使用like进行匹配,%表示任意个字符,_表示一个字符
    29.MySQL数据库的DML操作:
    A.insert into table_name(column1,column2 )values (value1,value2);
    //有括号时可以选择特定几列进行插入,没有括号时默认全部插入
     或 insert into table_name set column1=value1,column2=value2;
    B.select table1.column1,table1.column2 from table1 ,table2 where table1.column3=table2.column1;//两个表之间有关联时
    C.select table1.column1,table1.column2 ,table1.column3 from table1 left join table2 on table1.column3=table2.column3;
    //左关联在两个表拥有共同column3的条件(on字句中)下,如果column2没有匹配行则column2=NULL
    select table1.column1,table1.column2  from table1 left join table2  using(column3) where  table1.column2  is  null;
    //左关联在两个表拥有共同column3下,如果table1.column3为null则打印出来
    D.select  c.column1  from  table1 as c , table2 as b where c.column2=b.column2;//利用别名进行查询
    select c1.name, c2.name, c1.city  from  table as c , table as b where c1.city=c2.city and c1.name!= c1.name;
    //利用别名对同一个表中的多行进行查询
    select  name, city  from  table  order  by  name  asc; //第一个表进行升序查询(降序用desc)
     
    E.select  id, avg(amount)  from  table  group  by  id having avg(amount) > 50;
    //从table中查询每个id的大于50的平均值(如果仅仅使用avg()则查询的是所有列的平均值)
    select name from table limit 2,3; //返回查询结果的第2条到第三条
     
     
    30.update table set column=value;//更新表中一列的值
    31.alter  table  c1  modify  name  char (70) not null;
     
     
     
    用trim函数去除左右两边的特殊字符,再用get_magic_quotes_gpc()函数来检查是否自动加了引号,如果没有用addslashes()来进行过滤
     
     
        mysql_real_escape_string($string); //如果要将该字符串存入数据库,需要进行处理转义(预防数据库攻击)
    32.PHP代码连接MySQL数据库
    @ $db=new mysqli_connect(“主机名”,”用户名”,“登录密码”,“数据库名”);
    If(mysqli_connect_errno()){
    echo “错误提示”;
    exit;}
    A:
    执行查询操作:
     
     
     
    获取数据行数:
     取出数据库元素方法:
    1.
     
    2.
     
    3.
     
     
    B:执行插入语句:
     
    当使用insert,update和delete操作时,需用affected_rows函数用于获取插入行数
     
    C:使用prepare语句可以防止sql语句注入和提高执行速度
     
    sssd的意思是后面四个变量对应的分别是字符串,字符串,字符串,双精度。
    D:PEAR MBD2 抽象层(后期学习)
     
    安全性与电子商务
     
     
    33. 时间问题
    a.获取当前时间
    date_default_timezone_set(‘PRC’);
    echo date(‘Y-m-d H:i:s’);
    b.获取前一天此时时间
    date_default_timezone_set(‘PRC’);
    echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));
    34. 计算岁数:
    $day=25;   $month=5;   $year=1992;
        $bdaytime=mktime(0,0,0,$month,$day,$year);
        $nowtime=time();
        $ageunix=$nowtime-$bdaytime;
        $age=floor($ageunix/(360*24*60*60));
        echo $age;
    35.图形图像
     
    A.创建图像
    $image =imagecreatetruecolor($width,$height);   //创建一个空白的背景图像(图像标识符)
    $blue=imagecolorallocate($image,0,0,64);  //为图像分配颜色
    imagefill($image,0,0,$blue); //图像添加背景颜色(2,3参数是起始坐标)
    imagestring($image,4,50,150,’text’,$blue);//为图像添加字符串(2文本字体大小,3,4文本起始位置)
    B.输出图像
    Header(‘Content-type:image/png’); //告诉浏览器发送的是图像
    //Header()函数的另一个作用是http重定向,告诉浏览器加载一个不同的页面而不是被请求的那个(如果在调用该函数前,http已经发送那么这个函数将不会执行)
    imagepng($image); //调用该函数输出png图像
    C.清理
    Imagedestroy($image);
     
    36.会话
    A.开始一个会话
        session_start(); //在脚本执行的最开始处添加,开始一个会话
    B.注册一个会话
        $_ESSION[‘var’]=5; //
    C.使用一个会话
       session_start();      //开始一个会话
       $_SESSION[‘var’]  //获取会话变量
       //在使用对象作为会话变量时,必须在session_start()语句前,先实现对对象类的定义
      if(isset($_SESSION[‘var’])){}  //用来判断一个会话变量是否存在
    D.注销一个会话
    unset($_SESSION[‘var’]);   //注销一个会话变量
    session_destroy();          //注销一个会话
    37.其他特性
        A.eval($string); //把字符串当做PHP代码执行
    B.mysql_query($query) or die( $string||$function); //连接数据库失败,给出字符串提示或者调用一个函数(die与exit一样)
    C.$serail=serialize($object||$array); //该函数可以将一个对象或数组进行序列化为字符串(如果序列化对象,应该在使用该语句前对列进行实例化)
        $new=unserialize($object||$array);  //反序列化函数
    D.获取PHP拓展部件以及每个部件中的拓展函数
     
     
    E.识别当前脚本运行所有者
    echo get_current_user();
     
        G.    获取脚本最近修改时间
            date_default_timezone_set(‘PRC’);
            echo date(‘y-m-d H:i:s’,getlastmod());
    H.    ini_set(‘instruct’,’value’)  //临时修改php_ini中的值
          ini_get(‘instruct’);   //获取php_ini中的值
    I.show_source(‘var.php’);  //对PHP代码进行高亮显示
  • 相关阅读:
    20120621第一天_复习与测试\05方法
    20120621第一天_复习与测试
    转义字符符号及对应的含义
    如何判断一个窗体是否打开
    out 和ref 的小结
    20120621第一天_复习与测试\03循环控制
    详解C#break ,continue, return
    往xptable控件中添加数据
    校内网的设计。
    iPhone不再孤独,Palm Pre为伴——互联网的未来在手中。
  • 原文地址:https://www.cnblogs.com/lantian00/p/5267576.html
Copyright © 2011-2022 走看看