PHP学习小结2

試著忘記壹切 提交于 2019-12-10 13:45:47
34。数组

    (1)$arr = array();表示创建一个空数组,并把创建的空数组赋值给变量$arr。

    (2)索引数组:索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,

初始化:$friut=array("苹果","香蕉","菠萝");

   (3)索引数组赋值

索引数组赋值有三种方式:

第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]='苹果';

 

第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array('0'=>'苹果');

 

第三种:用array()创建一个空数组,直接在数组里用英文的单引号'或者英文的双引号"赋值,数组会默认建立从0开始的整数的键。比如array('苹果');这个数组相当于array('0'=>'苹果');
  (4)访问数组内容

$fruit0 = $fruit['0'];

如果是变量又不需要加引号。。

eg.$fruit[$index]

35.
foreach循环访问索引数组里的值

$fruit=array('苹果','香蕉','菠萝');
foreach($fruit as $k=>$v){
    echo '<br>第'.$k.'值是:'.$v;
}


36.
关联数组初始化
第一种:$arr=array("orange"=>"橘子",

"orange"=>"橘子"

);
第二种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr['apple']='苹果';

复制过程中用""或者''都可以

访问关联数组内容

$fruit0 = $fruit['banana'];


37.数组和变量的输出

print_r($arr0)

38.
自定义函数

function name() {
    echo 'Eric';
}

调用方法:

name()

返回值
可以返回一个数组

function numbers()
{
    return array(1,2,3);
}

$arr=numbers(1,2,3);

39.
可变函数
即通过变量的值来调用函数,因为变量的值是可变的,所以可以通过改变一个变量的值来实现调用不同的函数。


function name() {
    echo 'jobs';
}
$func = 'name';
$func(); //调用可变函数

用$func来通过函数名字绑定一个函数,函数名字可以改变,所以相应的调用

$func()也可以执行不同的函数。

40.
判断函数是否存在

function func() {
}
if (function_exists('func')){
    echo 'exists';
}

类是否定义可以使用class_exists。

class MyClass{
}
// 使用前检查类是否存在
if (class_exists('MyClass')) {
    $myclass = new MyClass();
}

文件是否存在file_exists等。

$filename = 'test.txt';
if (!file_exists($filename)) {
    echo $filename . ' not exists.';
}

41。类和对象

class Car {
    $name = '汽车';
    function getName() {
        return $this->name;
    } }

var 关键字如果没有加上protected或者private,默认等于public

//实例化一个car对象
$car = new Car();
$car->name = '奥迪A6'; //设置对象的属性值

echo $car->getName();  //调用对象的方法 输出对象的名字


42.

定义类的方法


class Car {
    public function getName() {
        return '汽车';
    }
}
$car = new Car();
echo $car->getName();

使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。

class Car {
    public static function getName() {
        return '汽车';
    }
}
echo Car::getName(); //结果为“汽车”

43.

Static静态关键字

静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用。静态属性不允许对象使用->操作符调用。


静态方法也可以通过变量来进行动态调用

$func = 'getSpeed';
$className = 'Car';
echo $className::$func();  //动态调用静态方法
类和类中的方法都可以通过变量来动态调用

静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。

44,。

访问控制

类属性必须定义为公有受保护私有之一。为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。


如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。

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(); //通过静态方法来获得一个实例
44.

重载

PHP中的重载指的是动态的创建属性与方法

   (1)属性重载:对不存在的属性赋值,直接动态创建(这个动态创建是只能被实例对象使用一次吗,还是可以一次保留在类里?)

   (2)方法重载


方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__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;
       可以在_call方法里面实现你想实现的不存在方法的内容


45.

对象的高级特性

  (1)对象比较

当同一个类的两个实例的所有属性都相等时,可以使用比较运算符==进行判断,当需要判断两个变量是否为同一个对象的引用时,可以使用全等运算符===进行判断。

  (2)对象复制


$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);
  (3)对象序列化

可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。


$a = new Car();
$str = serialize($a); //对象序列化成字符串
echo $str.'<br>';
$b = unserialize($str); //反序列化为对象
var_dump($b);
 


46.

单引号和双引号的区别


单引号和双引号到底有啥区别呢?

PHP允许我们在双引号串中直接包含字串变量。

而单引号串中的内容总被认为是普通字符。

比如:

$str='hello';
echo "str is $str"; //运行结果: str is hello
echo 'str is $str'; //运行结果: str is $str

47.

去除字符串首尾的空格

trim去除一个字符串两端空格。
rtrim是去除一个字符串右部空格,其中的r是right的缩写。
ltrim是去除一个字符串左部空格,其中的l是left的缩写。


48.

获取字符串的长度

 

$len = strlen($str);
   获取含中文的字符串长度(获取长度包括其中的英文字符)


$str = "我爱你";
echo mb_strlen($str,"UTF8");//结果:3,此处的UTF8
49.

字符串的截取

1、英文字符串的截取函数substr()


$str='i love you';
//截取love这几个字母
echo substr($str, 2, 4);
2、中文字符串的截取函数mb_substr()


$str='我爱你,中国';

//截取中国两个字

echo mb_substr($str, 4, 2, 'utf8');//
50.

查找字符串

函数说明:strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])


$str = 'I want to study at imooc';
$pos = strpos($str, 'imooc');
echo $pos;//结果显示19,表示从位置0开始,imooc在第19个位置开始出现
51.

替换字符串

函数说明:str_replace(要查找的字符串, 要替换的字符串, 被搜索的字符串, 替换进行计数[可选])


$str = 'I want to learn js';
$replace = str_replace('js', 'php', $str);
echo $replace;//结果显示I want to learn php
52.

字符串的合并与分割

1、php字符串合并函数implode()

函数说明:implode(分隔符[可选], 数组)

返回值:把数组元素组合为一个字符串

例子:

$arr = array('Hello', 'World!');
$result = implode('', $arr);
print_r($result);//结果显示Hello World!

2、php字符串分隔函数explode()

函数说明:explode(分隔符[可选], 字符串)

返回值:函数返回由字符串组成的数组

例子:

$str = 'apple,banana';
$result = explode(',', $str);
print_r($result);//结果显示array('apple','banana')

53.

什么叫正则表达式

正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式。

$p = '/apple/';
$str = "apple banna";
if (preg_match($p, $str)) {
    echo 'matched';
}

其中字符串'/apple/'就是一个正则表达式,他用来匹配源字符串中是否存在apple字符串。

54.

正则表达式的基本语法

经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)

55.

取得当前的Unix时间戳

$time=time();


//date函数,第二个参数取默认值的情况
echo date("Y-m-d");  //取得当前时间

//date函数,第二个参数有值的情况
echo date("Y-m



56.

抛出一个异常

//创建可抛出一个异常的函数
function checkNum($number){
     if($number>1){
         throw new Exception("异常提示-数字必须小于等于1");
     }
     return true;
 }
 
//在 "try" 代码块中触发异常
 try{
     checkNum(2);
     //如果异常被抛出,那么下面一行代码将不会被输出
     echo '如果能看到这个提示,说明你的数字小于等于1';
 }catch(Exception $e){
     //捕获异常
     echo '捕获异常: ' .$e->getMessage();
 }
            getMessage()是Exception里面输入的文字.


其中常用的方法有:

getTrace 获取异常追踪信息
getTraceAsString 获取异常追踪信息的字符串
getMessage 获取出错信息

57.

'<br>'
为PHP内的换行

58.创建一个二维数组

while($row =mysql_fetch_assoc($query)){
			$data[] = $row;
		}
$data[]  赋值表示每次加一个一维数组进去,最后结果是一个二维数组


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!