PHP笔记及常用函数

<?php
基础语法
PHP代码可以放的位置
纯PHP文件,可以不要结束的?>标记
强烈建议不使用短标签<??>
指令分隔符;
注释和JS一样(js不能用#注释,)(#单行,单行,/*多行*/)
PHP的常用类型
整型,字符串,浮点型,数组,对象object,资源resource,NULL,布尔boolean
单引号和双引号区别及用法(双引号中的变量是要被解释的。)
$str = "WHERE Fid={$_SESSION['user']['username']}";
变量
变量的定义,$打头,英文,数字,下划线,一般自定义变量用英文字母打头,变量名全部用小写字母,不同的英文单词之间用下划线接连
$this是PHP的保留字,不能用来定义成一个自定义的变量
全局变量和局部变量的区别及用法,global $a,$b;global只能用在function内部

=========================================
$a = 123;
$b = 456;
function test() {
    global $a;
    echo $a;
    $a = 789;
}


function test2() {
    global $a;
    echo $a;
}


test();
test2();
echo $a;
=============================================




可变变量,把一个变量的值当成另一个变量的名字,表现上就是两个$=>>$$str

$str = 'abc';
$abc = '11111111111';
echo $($str);

变量的引用(值传递):&,比如:$a = 1; $b = &$a;
特殊符号:@,可以抑制错误的报道,数据库连接、操作用的比较多
常量
命令:define('名称','值');常量名一般都用大写字母
检测常量是否被定义过defined('名称');
常量是全局的。可以自动在类,类中的方法,函数中直接调用。
包含(引入文件)

include , include_once
require , require_once
include 'aaa/001.php';



输出语句
echo 平时只用来输出一个普通的变量
print_r($a)一般用来输出数组或对象,输出时不带类型。主要用来调试程序
var_dump($a)一般用来输出任何类型的数据,会带数据类型。主要用来调试程序
程序结束命令exit;
phpinfo();当前的PHP配制


数组--------------------------------------------------------------------------

$arr = array('name'=>111,'sex'=>2,3=>3,'a'=>4,5);
数组的下标:下标、key、键名
$b[1] = 111;
$b[5] = 555;
$a[] = 'adsfd';
$a[] = 'adsfd';
数组的维数,主要看中括号有几层
$c[][] = '二维';
上面的等同于:$c = array(array('二维'));
还等同于:$c = array(0=>array(0=>'二维'));
还等同于:$c[0] = array(); $c[0][0] = '二维';
还等同于:$c[0] = array(0=>'二维');
还等同于:$c[0] = array('二维');
print_r($c);



语句和表达式------------------------------------------------------------------

if else
for
while
do while
switch() { case 1: break;}如果不加break,则程序会一直往下走,直到遇到break为止。
foreach
$arr = array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
foreach($arr as $key=>$value) {
    echo '键名为' . $key . '的值为:' . $value . '<br />';
}
$key是可以省略的,$value不能省略,$key和$value只是一个变量名,不固定不变的名称
运算符------------------------------------------------------------------------
连接符是英文句点,不是加号



类与对象----------------------------------------------------------------------

类的声明class
class
extends 继承
类的封装
private $a=1; 私有属性,只能在类内部调用,不能在类外部调用
public $b=2; 公共属性,可以在类内部或外部调用
protected $c = 3; 受保护的属性,可以在父类和子类内调用。不能被外部调用。
static 静态修饰符
self:: 调用本类静态修饰的属性或方法
parent:: 调父级的属性或方法 
$this->  调用本类内的属性或方法
-> 指向引用的作用
:: 指向引用的作用
构造方法__construct()在所有的方法没有运行之前,先自动运行
析构方法__destruct()在所有的方法都运行完以后,再自动运行



报错机制----------------------------------------------------------------------
打开报错机制:php.ini
将display_errors = On 假如为Off的话,则设为On
;error_reporting  =  E_ALL & ~E_NOTICE
把error_reporting  =  E_ALL前面的分号去掉,把 & ~E_NOTICE删除
网站正式对外发布的时候,需要关闭这个报错机制。
魔术方法
__autoload()




预定义变量--------------------------------------------------------------------
超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量

$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量
$_POST — HTTP POST 变量
$_FILES — HTTP 文件上传变量
$_REQUEST — HTTP Request 变量
$_SESSION — Session 变量,可以跨页面调用
session.auto_start = 1 等于1开启,等0关闭
session.save_path = "e:/session" 路径可改变,最好更改一下默认的路径
session.gc_maxlifttime 生命周期
$_COOKIE — HTTP Cookies,可以跨页面调用,但是当前页面取不到


[PHPSESSID]
COOKIE,SESSION----------------------------------------------------------------

SESSION
session_start();
$a = 1;
$_SESSION['aaa'] = $a;
SESSION的值存储在服务器端。
SESSION的值靠COOKIE里面存储的PHPSESSID来获取。也就是说,每次刷新页面,浏览器都自动将COOKIE中的PHPSESSID的值发给了服务器。
COOKIE
setcookie('aaa', 1234, time() + 10, '/', '.test.me');
COOKIE赋值必须用函数setcookie,取值必须在赋完值之后重新刷新页面才能取得到。
COOKIE存储在浏览器端
setcookie函数在使用前,不允许有任何字符的输出。



常用函数
str_pad 返回指定的字符串填充后字符串
trim 返回清除首位和末尾字符串空格和指定字符的字符串
ltrim 返回清除首位字符串空格和指定字符后的字符串
rtrim 返回清除末尾字符串空格和指定字符的字符串
addslashes 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
stripslashes 返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。 
stripcslashes 返回反转义后的字符串。可识别类似 C 语言的\, \n,\r,... 八进制以及十六进制的描述。 
substr 返回字符串 string 由 start 和 length 参数指定的子字符串。 
mb_substr (mb_substr 执行一个多字节安全的substr()操作基础上的字符数。从str的开始位置计算。第一个字符的位置为0。第二个字符的位置是1,依此类推。   str 被截取的母字符串。   start开始位置。   length 返回的字符串的最大长度,如果省略,则截取到str末尾。   encoding 参数为字符编码。如果省略,则使用内部字符编码。 )。
str_replace 字符串替换
str_ireplace不区分大小写替换返回字符串或数组
preg_replace 正则替换
strlen 测字符串长度
mb_strlen 按照指定编码方式测长度
substr_count 计算字串出现的次数
explode 使用一个字符串分割另一个字符串
preg_split() - 通过一个正则表达式分隔字符串
implode 函数把数组元素组合为一个字符串。
strtoupper 将字符串转化为大写
strtolower 将字符串转化为小写
ucfirst 字符串首字母转化大写
ucwords 字符串每个单词首字母转化为小写
htmlspecialchars  把一些预定义的字符转换为 HTML 实体。
htmlentities($str,ENT_QUOTES,'UTF-8') 把一些预定义的字符转换为 HTML 实体。
strpos 查找字符串首次出现的位置
stripos 查找字符串首次出现的位置(不区分大小写)
number_format 函数通过千位分组来格式化数字。
date_default_timezone_set('PRC');设定用于一个脚本中所有日期时间函数的默认时区
time 返回当前的 Unix 时间戳
date学一下参数 date('Y年m-d H:i:s',time());
similar_text 计算两个字符串的相似度,可选择返回百分比
urlencode 编码 URL 字符串
urldecode 解码已编码的 URL 字符串
preg_match() - 执行一个正则表达式匹配
quotemeta 函数在字符串中某些预定义的字符前添加反斜杠。 这些预定义字符是:   句号 (.) 反斜杠 (\) 加号 (+) 星号 (*) 问号 (?) 方括号 ([]) 脱字符号 (^) 美元符号 ($) 圆括号 (())
chr() 函数从指定的 ASCII 值返回字符
ord() 返回字符的 ASCII 码值
rand 产生一个随机整数
md5 md5加密函数
base64_encode 使用 base64 对字符串进行编码。
base64_decode 对使用 MIME base64 编码的数据进行解码
nl2br() 在字符串所有新行之前插入 HTML 换行标记
iconv() 转码函数;
mb_convert_encoding() 因执行效率的关系,一般情况下用iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数。
json_encode() 编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。
json_decode() 接受一个JSON 格式的字符串并且把它转换为 PHP 变量




$str1 = 'a';
$str2 = '%E4%B8%AD%E5%9B%BDabce12%E6%B1%89%E5%AD%97';
echo ord($str1);
echo base64_decode('MTIzNDU2');
-------------------
ceil() 进一法取整
floor() 舍去法取整
round() 对浮点数进行四舍五入
strval() 获取变量的字符串值(有转化为字符串的作用)
intval() 获取变量的整数值
floatval() 获取变量的浮点值
(int)
(string)
(int) (float) (string) (array) (object) (bool) 
------------------
preg_match 正则匹配
http://www.phphome.org/javascript_jiaocheng/111.htm
<<<HTML 字符串 最后一定要用 HTML;结尾
strstr 查找字符串的首次出现
stristr 查找字符串的首次出现(忽略大小写)
strtok 标记分割字符串
isset 检测一个变量是否存在
unset 注销一个变量
empty 判断是否为空,要注意能判断哪些情况
-------------------------------------------
数组
array_slice — 从数组中取出一段
in_array — 检查数组中是否存在某个值
var_dump
print_r
echo
count 计算数组中的单元数目或对象中的属性个数
array_push 将一个或多个单元压入数组的末尾(入栈)
array_unique 移除数组中重复的值
array_merge 合并一个或多个数组
shuffle 打断数组顺序
range — 建立一个包含指定范围单元的数组 
echo $arr2[1][1][2];
array_key_exists 检查给定的键名或索引是否存在于数组中
current 返回数组中的当前单元
next 将数组中的内部指针向前移动一位 
prev 将数组的内部指针倒回一位
end 将数组的内部指针指向最后一个单元 
reset 将数组的内部指针指向第一个单元
array_rand 从数组中随机取出一个或多个单元 
array_chunk 将一个数组分割成多个
list 把数组中的值赋给一些变量 


时间日期
microtime 返回当前 Unix 时间戳和微秒数
time 返回当前的 Unix 时间戳
date 格式化一个本地时间/日期
strtotime 将任何英文文本的日期时间描述解析为 Unix 时间戳
mktime 取得一个日期的 Unix 时间戳


mysql数据库
mysqlpdo类文件介绍

PHP框架
PHP类
<?php
class Test {
    //类的属性
    private $a = 1;//私的属性(类中的变量),只能在该类内部使用
    //private $a;
    public $aa;//公共的属性,可以在类内部或外部调用到
    protected $bb;//受保护的属性,可以在父类和子类内部调用到,但不能在类的外部调用到
    //静态属性
    static public $dd;
    //static $dd;


    //private,public,protected这三个关键字是类的修饰符,它们用来对类的属性和方法(函数)进行封装(权限限制)
    //它们可以放在属性名和function的前面
    //PHP5默认的情况下,在属性名和function前面没有写任何修饰符的,都默认是public
    //static修饰的属性或方法,通常用::的方式调用
    //self后台只能用::,不能用->,$this后面只能用->,不能用::
    //self只能调到static修饰的属性或方法,不能调到非static修饰的属性和方法,$this可以调到所有的


    function  __construct() {
        //构造函数,new了类以后,该函数会做为第一个自动运行的函数
    }


    function Test() {
        //PHP4的构造函数,new了类以后,该函数会做为第一个自动运行的函数
        //PHP5以后推荐使用上面的__construct()
    }


    function  __destruct() {
        //析构函数,new了类以后,该函数会做为最后一个自动运行的函数
    }


    function test() {
        //调用属性
        $this->$a;
        //在方法内部调用本类的静态属性
        $rs = self::$dd;
        self::$dd = 'adsfasdfadsfds';


        //调用静态方法
        self::test3();
        $this->test3();
    }


    function test2() {
       $rs = $this->test();
    }


    //静态方法
    static function test3() {
        $this->test2();
    }
}


//类的调用
$obj = new Test();


//静态的方法和属性在调用时有一个好处,就是不需要事先new该类
//比如:
Test::test3();
Test::$dd;//带美元符
//其它的方法和属性的调用,一般都是用new之后的对象来调用,比如
$obj->test();
$obj->aa;//不带美元符




//类的继承
class Test2 {
    private $a;
    protected $b;
    public $c;


    private function aa() {


    }


    protected function bb() {


    }


    function cc() {
        
    }
}
class Test3 extends Test2 {
    //Test3现在是Test2的子类
    //extends就是继承的意思


    function tt() {
        //parent不能调到$a,因为$a是父类的私有属性
        parent::$b;
        parent::$c;
        //同样,也不能调到函数aa,因为它也是私有的
        parent::bb();
        parent::cc();


        //调用其它类中的静态方法
        Test4::tt1();


        //调用其它类中的非静态方法
        $objTest4 = new Test4();
        $objTest4->tt2();
    }
}


class Test4 {
    static function tt1() {


    }


    function tt2() {
        
    }
}


//抽象类和抽象方法。有时间看一看


//类中的魔术方法,有时间就了解一下。没时间可以先放着
class Test5 {
    function __get() {


    }


    function __set() {
        
    }


    function  __isset($name) {


    }


    function  __unset($name) {
        
    }
}


我来说两句!

发表评论:

◎欢迎参与讨论,请在这儿发表您的观点。

«   2019年7月   »
1234567
891011121314
15161718192021
22232425262728
293031
about关于我

root.wang&老王SEO

邮箱:8#ie3.cn

微博:weibo.com/mldh

lofter

PHP攻城师

SEO攻城师

python爱好者

数据挖掘爱好者

智能硬件爱好者

摄影爱好者

网站分类
搜索
文章归档
友情链接