PHP 基础复习

来源:互联网 发布:vb.net 字符串包含 编辑:程序博客网 时间:2024/06/05 08:54

目录:

——数组

——函数

——字符串操作

——面向对象特征

——正则表达式

——cookies


一.数组

PHP 中的数组分为索引数组和关联数组

索引数组初始化和输出

$a=array("abc","def","ghi");print_r($a);赋值方式:$a=array("a","b","c");$a[0]=a;$a=array('0'=>'a','1'=>'b','2'=>'c');取值方式:$a0=$a['0'];for循环取值:for($i=0;$i<3;$i++){     echo 'a'.$i.'='.$a[$i];}foreach循环取值:foreach($a as $k=>$v){    each 'a'.$key.'='.$v;}
关联数组的初始化和输出

<?PHP$fruit=array('apple'=>"APPLE",'banana'=>"BANANA",'pineapple'=>"APINEAPPLE");print_r($fruit);输出结果:Array ( [apple] => APPLE [banana] => BANANA [pineapple] => APINEAPPLE )赋值方式:$furit=array('apple'=>'APPLE');$furit['apple']='APPLE';取值方式:$furit0=$furit['apple']foreach循环访问关联数组:foreach($furit as $k=>$v){    echo 'key['.$key.']='.$v;}


二.函数

自定义函数<?phpfunction say(){    echo 'hello world';}有返回值的函数function add($a) {    return $a+1;}返回多值的函数:function numbers() {    return array(1, 2, 3);}list ($one, $two, $three) = numbers();调用可变函数,规则:变量名+();<?phpfunction func() {    echo 'my function called.';}$name = 'func';$name();//调用可变函数class book {    function getName() {        return 'bookname';    }}$func = 'getName';$book = new book();$book->$func();字符串替换函数str_replace<?php$str = 'I am jobs';$str=str_replace('jobs','steven jobs',$str);echo $str;判断函数是否存在:<?phpfunction func() {    echo 'exists';}$name = 'func';if (function_exists('func')) { //判断函数是否存在    $name();}判断类是否存在:class MyClass{}// 使用前检查类是否存在if (class_exists('MyClass')) {    $myclass = new MyClass();}判断文件是否存在:$filename = 'test.txt';if (!file_exists($filename)) {    echo $filename . ' not exists.';}

三.字符串操作

<?php//使用双/单引号/定义一个字符串$hello="hello world1";$hello='hello world2';//heredoc语法结构$hello=<<<TAGhello world3TAG;echo $hello;单/双引号的区别:双引号允许包含 字符串变量<?php$str='hello';echo "str is $str"; //运行结果: str is helloecho 'str is $str'; //运行结果: str is $str字符串链接:用“.”链接字符串$hello='hello';$world=' world';$hi = $hello.$world;除去首位空格:trim去除一个字符串两端空格。rtrim是去除一个字符串右部空格,其中的r是right的缩写。ltrim是去除一个字符串左部空格,其中的l是left的缩写。echo trim(" 空格 ")."<br>";echo rtrim(" 空格 ")."<br>";echo ltrim(" 空格 ")."<br>";字符串长度:$str = 'hello';$len = strlen($str);echo $len;//输出结果是5中文字符串长度:$str = "我爱你";echo mb_strlen($str,"UTF8");//结果:3字符串截取:函数说明:substr(字符串变量,开始截取的位置,截取个数)$str='i love you';//截取love这几个字母echo substr($str, 2, 4);中文字符串截取:$str='我爱你,中国';//截取中国两个字echo mb_substr($str, 4, 2, 'utf8');字符串查找:函数说明:strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])$str = 'I want to study at imooc';$pos = strpos($str, 'imooc');echo $pos;//结果显示19,表示从位置0开始,imooc在第19个位置开始出现字符串替换:函数说明:str_replace(要查找的字符串, 要替换的字符串, 被搜索的字符串, 替换进行计数[可选])$str = 'I want to learn js';$replace = str_replace('js', 'php', $str);echo $replace;//结果显示I want to learn php格式化字符串:函数说明:sprintf(格式, 要转化的字符串)$str = '99.9';$result = sprintf('%01.2f', $str);echo $result;//结果显示99.90说明:1、这个 % 符号是开始的意思,写在最前面表示指定格式开始了。 也就是 "起始字符", 直到出现 "转换字符" 为止,就算格式终止。2、跟在 % 符号后面的是 0, 是 "填空字元" ,表示如果位置空着就用0来填满。3、在 0 后面的是1,这个 1 是规定整个所有的字符串占位要有1位以上(小数点也算一个占位)。    如果把 1 改成 6,则 $result的值将为 099.90    因为,在小数点后面必须是两位,99.90一共5个占位,现在需要6个占位,所以用0来填满。4、在 %01 后面的 .2 (点2) 就很好理解了,它的意思是,小数点后的数字必须占2位。 如果这时候,$str 的值为9.234,则 $result的值将为9.23.    为什么4 不见了呢? 因为在小数点后面,按照上面的规定,必须且仅能占2位。 可是 $str 的值中,小数点后面占了3位,所以,尾数4被去掉了,只剩下 23。5、最后,以 f "转换字符" 结尾。字符串合并和分割:合并函数说明:implode(分隔符[可选], 数组)$arr = array('Hello', 'World!');$result = implode('', $arr);print_r($result);//结果显示Hello World!分割函数说明:explode(分隔符[可选], 字符串)$str = 'apple,banana';$result = explode(',', $str);print_r($result);//结果显示array('apple','banana')字符串转义:函数说明:用于对特殊字符加上转义字符,返回一个字符串$str = "what's your name?";echo addslashes($str);//输出:what\'s your name?



四.面向对象特征

类、类属性、类方法class Car {    public $name='Car01';    public function getName() {        return '汽车';    }    public static function getType(){        return 'Car';    }​}$car = new Car();echo $car->getName();echo Car::getType();说明:使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。构造器的使用:class Car{    public $name='Car01';    public $color='Red';    private $price='12800';//构造方法function __construct(){    echo 'new Car';}    public function getName(){    return $this->name;    }public static function getTypeName(){    return 'Car';}}$car=new Car();$car01=$car->getName();$carType=Car::getTypeName();echo $car01,$carType;打印结果:new CarCar01Car可以给构造方法添加参数:function __construct($name,$color){    echo 'new Car';}调用:$car=new Car('Car02','Black');析构函数:释放不用的对象function __destruct(){    echo 'destory object';}$car=NULL;时自动调用。php单例模式:class Car {    private function __construct() {        echo 'object create';    }    private static $_object = null;    public static function getInstance() {        if (empty(self::$_object)) {            self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象        }        return self::$_object;    }}//$car = new Car(); //这里不允许直接实例化对象$car = Car::getInstance(); //通过静态方法来获得一个实例static 关键字:class Car {    private static $speed = 10;        public static function getSpeed() {        return self::$speed;    }}echo Car::getSpeed();  //调用静态方法$func = 'getSpeed';$className = 'Car';echo $className::$func();  //动态调用静态方法class BigCar extends Car {    public static function start() {        parent::speedUp();//调用父类的方法    }}BigCar::start();echo BigCar::getSpeed();继承:class Car {    public $speed = 0; //汽车的起始速度是0    function __construct(){        echo 'parent_construct';    }    public function speedUp() {        $this->speed += 10;        return $this->speed;    }}//定义继承于Car的Truck类class Truck extends Car{    public function speedUp(){        $this->speed = parent::speedUp() + 50;    }    function __construct(){          parent::__construct();//调用父类的构造器        echo 'child_construct____';            }}$car = new Truck();$car->speedUp();echo $car->speed;重载:class Car {    private $ary = array();        public function __set($key, $val) {        $this->ary[$key] = $val;    }        public function __get($key) {        if (isset($this->ary[$key])) {            return $this->ary[$key];        }        return null;    }        public function __isset($key) {        if (isset($this->ary[$key])) {            return true;        }        return false;    }        public function __unset($key) {        unset($this->ary[$key]);    }}$car = new Car();$car->name = '汽车';  //name属性动态创建并赋值echo $car->name;__call();调用不存在的方法时调用__callStatic();调用不存在的静态方法时调用class Car {    public $speed = 0;        public function __call($name, $args) {        if ($name == 'speedUp') {            $this->speed += 10;        }    }}$car = new Car();$car->speedUp(); //调用不存在的方法会使用重载echo $car->speed;高级特性:class Car {}$a = new Car();$b = new Car();if ($a == $b) echo '==';   //true 两个实例是否完全相同if ($a === $b) echo '==='; //false 两个变量是否来自同一个引用class Car {    public $name = 'car';        public function __clone() {        $obj = new Car();        $obj->name = $this->name;    }}$a = new Car();$a->name = 'new car';$b = clone $a;//复制一个对象var_dump($b);序列化和反序列化:class Car {    public $name = 'car';}$a = new Car();$str = serialize($a); //对象序列化成字符串echo $str.'<br>';$b = unserialize($str); //反序列化为对象var_dump($b);

五.正则表达式

$p='/苹果/';//PCRE库函数preg_match用于执行一个正则匹配$str = "我喜欢吃苹果";if (preg_match($p, $str)) {    echo '匹配成功';}PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~):转义:/http:\/\//函数批量转义:$p = 'http://';$p = '/'.preg_quote($p, '/').'/';echo $p;/http\:\/\//元字符:正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有:\ 一般用于转义字符^ 断言目标的开始位置(或在多行模式下是行首)$ 断言目标的结束位置(或在多行模式下是行尾). 匹配除换行符外的任何字符(默认)[ 开始字符类定义] 结束字符类定义| 开始一个可选分支( 子组的开始标记) 子组的结束标记? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)* 量词,0 次或多次匹配+ 量词,1 次或多次匹配{ 自定义量词开始标记} 自定义量词结束标记例1:匹配邮箱//下面的\w匹配字母或数字或下划线。$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';$str = "我的邮箱是Spark.eric@imooc.com";preg_match($p, $str, $match);echo $match[0];例2:匹配电话$p = '/\w+\-\d+/';  // \d匹配数字$str = "我的电话是010-12345678哈哈11-22";preg_match($p, $str, $match);echo $match[0];贪婪模式(匹配字符+):在可匹配与可不匹配的时候,优先匹配$p = '/\d+\-\d+/';$str = "我的电话是010-12345678";preg_match($p, $str, $match);echo $match[0]; //结果为:010-12345678懒惰模式(匹配字符?):在可匹配与可不匹配的时候,优先不匹配$p = '/\d?\-\d?/';$str = "我的电话是010-12345678";preg_match($p, $str, $match);echo $match[0];  //结果为:0-1当我们确切的知道所匹配的字符长度的时候,可以使用{}指定匹配字符数$p = '/\d{3}\-\d{8}/';$str = "我的电话是010-12345678";preg_match($p, $str, $match);echo $match[0]; //结果为:010-12345678preg_match_all匹配所有:<?php$p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";$str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";preg_match_all($p, $str, $matches);print_r($matches);搜索和替换:$string = 'April 15, 2014';$pattern = '/(\w+) (\d+), (\d+)/i';$replacement = '$3, ${1} $2';echo preg_replace($pattern, $replacement, $string); //结果为:2014, April 15替换多余的空格:$str = 'one     two';$str = preg_replace('/\s+/', ' ', $str);echo $str; // 结果改变为'one two'

六.Cookies

设置Cookie:<?phpsetcookie('test', time());ob_start();print_r($_COOKIE); $content = ob_get_contents();$content = str_replace(" ", ' ', $content);ob_clean();header("content-type:text/html; charset=utf-8");echo 'current Cookie =';echo nl2br($content);删除Cookie:setcookie('test', '', time()-1); Cookie路径:cookie中的路径用来控制设置的cookie在哪个路径下有效,默认为'/',在所有路径下都有,当设定了其他路径之后,则只在设定的路径以及子路径下有效,例如:setcookie('test', time(), 0, '/path');上面的设置会使test在/path以及子路径/path/abc下都有效,但是在根目录下就读取不到test的cookie值。Session:<?php//开始使用sessionsession_start();//设置一个session$_SESSION['test'] = time();//显示当前的session_idecho "session_id:".session_id();echo "<br>";//读取session值echo $_SESSION['test'];//销毁一个sessionunset($_SESSION['test']);echo "<br>";var_dump($_SESSION);打印结果:session_id:s1uhfu4egnef47gc0jennpuhr21423131115array  empty设置Session:<?php//在这里设置name的session值为jobssession_start();$_SESSION['name'] = 'jobs';echo $_SESSION['name'];删除Session:删除当前:session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name']; //提示name不存在删除所有:session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();session_destroy();值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();unset($_SESSION);session_destroy(); var_dump($_SESSION); //此时已为空


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机不小心购买游戏币怎么办 在淘宝买的洗衣粉是假的怎么办 京东快递电话填错了怎么办 新买的手机卡被注册过支付宝怎么办 手机卡掉了别人登陆支付宝怎么办 手机卡注销了支付宝欠的钱怎么办 手机丢了支付宝和微信里的钱怎么办 新办的手机号已被注册支付宝怎么办 新办的移动卡不能注册支付宝怎么办 新办的宝卡支付宝注册过怎么办 办支付宝后银行卡被盗刷怎么办 微信扫二维码送平衡群发了怎么办车 拼多多没收到货点了确认收货怎么办 拼多多收货地址填错了怎么办 京东订单申请退款已发货怎么办 手机播放声音的地方进水了怎么办 手机出声音的地方进水了怎么办 手机听声音的地方进水了怎么办 装修公司我只要基装她不肯怎么办 雄迈未来家庭忘记账号和密码怎么办 地方文件和国家政策有冲突怎么办? 网上贷款放款成功没有到账怎么办 我来贷放款中不到账怎么办 手持身份证被别人网贷了怎么办 身份证被别人做了网贷怎么办 身份证丢了被别人网贷了怎么办 户口身份证被注销了网贷怎么办 首付交了贷款办不下来怎么办 付首付后贷款没有批下来怎么办 交了首付贷款没有办下来怎么办 买房交了首付贷款没批下来怎么办 交完首付办不下来贷款怎么办 房子交了首付贷款办不下来怎么办 浦发银行办理房贷流水不够怎么办 房贷审批过程中突然换工作怎么办 建行快贷结清后无额度怎么办 建设银行快贷逾期2个月怎么办 全职速卖通一个月没订单要怎么办 买家点的好评写的差评怎么办 手机流量把话费扣没了怎么办 街电忘记还怎么办3天了