(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[] 赋值表示每次加一个一维数组进去,最后结果是一个二维数组
来源:oschina
链接:https://my.oschina.net/u/2493156/blog/632941