该【Php笔记 】是由【海洋里徜徉知识】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【Php笔记 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。Php笔记
php基本语法
定义一个变量要以$符号打头
Php可以和html混用
Php变量的数据类型是变化的
Php区分大小写
Php变量的名称要以下划线或字母打头,不能是数字
php数据类型有哪些
:整形
小数型(单精度,双精度)
布尔类型(表真和假)
字符串
:数组(array)
对象(object)
:null
资源类型(resource)
整形的细节
echo PHP_INT_SIZE; 输出int型所占空间
echo PHP_INT_MAX; 输出int型的最大整数
如果一个int整数超出范围,它会自动转换类型为float
布尔类型就两个值:TRUE FALSE
会当做假的值:false,整型0,,空字符串,字符串“0”,null,空数组,没有任何元素的对象
浮点数的精度为14位(从左边开始,第一个非0数就是精度开始)
一个字符占用一个字节
一个字符串类型理论上可以表示足够大,直到内存用完
我们定义字符串的时候可以用‘’,也可以用“”
区别案例:①$a=90
$a1=”hello$a;
$a2=’hello$a’;
echo $a1; //会输出hello90
echo $a2; //会输出 hello$a
②$a=”abcd\””; //会输出abcd”
$b=’abcd\”’; //会输出abcd\”
var_dump(变量) //输出变量类型和变量值
+(加),-(减),*(乘),/(除),%(取余)
++(自加),--(自减),+=(左加),-=(左减)
*=(左乘),/=(左除),%=(左取余)
== //比较是否相等,值相等即可,不比较类型
=== //值相等,类型也相等
!= //值不等即可
!== //值不等或类型不等
< //小于
> //大于
>= //大于或等于
<= //小于或等于
and 逻辑与(优先级低于=)
or 逻辑或(优先级低于=)
xor 逻辑异或
! 逻辑非
&& 逻辑与(优先级比and高,也高于=)
|| 逻辑或(优先级比or高,也高于=)
表达式1?表达式2:表达式3
规则:如果表达式1的运算结果为真,则取表达式2的值,否则取表达式3的值
连接运算符 .
案例: $a=”hello”;
$b=$a.” world”;
echo $b;
//结果为hello world
基本语法:变量 instanceof 类 //变量是否为某一类,通常在面向对象开发时使用
Php程序的三大流程控制
:单分支,双分支,多分支
①单分支 if(条件表达式){语句;语句;…}
②双分支 if(条件表达式)
{n多语句}
else{
n多语句
}
③多分支 if(条件表达式){
N多语句
}else if(条件表达式){
N多语句
}else if(条件表达式){
N多语句
}else{
N多语句
} //else if 可以有很多个
④switch语句 switch(表达式){
case 常量1:n多语句;break;
case 常量2:n多语句;break;
……
case 常量3:n多语句;break;
defual:n多语句;break;
}
//defual 语句可以有也可以没有
常量的类型(int,float,字符串,布尔型)
①for循环: for(循环初值;循环条件;步长){
循环语句
}
②while循环: while(循环条件){
循环语句
}
③do…while循环: do{
循环体
}while(循环条件)
①break:结束当前整个循环,可以给一个数字表示退出到第几层循环
②continue:结束本次循环剩余代码,重新开始新的一次循环,后可以接一个数字,表示从第几次循环重新开始
③goto:通过goto语句我们可以将程序跳转到指定的地方去执行
goto 标签;
标签:
语句;
案例:goto a;
echo ‘aa’;
a:
echo ‘bb’;//结果不输出aa,输出bb
常量前面没有$符号
常量用define()函数定义,而不能通过赋值语句
常量可以在任何地方定义和访问
常量一旦被定义就不能被重新定义或取消定义
常量的值是标量(string,integer,float,boolean)
常量在定义时,就需要赋初值
常量的名称,一般全部大写,然后用下划线间隔
案例:①define(“AX”,12); ②const AX=12;//
echo AX; //结果输出12 echo AX; //结果输出12
函数
自定义函数的基本语法结构
function 函数名(参数列表){
函数体;
return 语句; //主要用处是返回一个结果,这个可以没有
}
调用函数时要用指令:require ‘函数文件名’;
,可以使用的指令如下
require (‘函数的文件名’);
require ‘函数文件名’;
$a=‘函数文件路径’;
require $a;
require 和require_once 区别
前者遇到既包含文件,后者会判断是否已经包含过了,如果包含过了,则不会再包含文件
include 和 include_once:
include(‘被包含文件’);
include ‘被包含文件’;
$a=‘函数文件路径’;
include $a;
include 和require 区别:
前者如果出现错误,会继续执行,后者出现错误,会终止程序
函数的参数列表可以是多个,且数据类型可以是任意类型
函数名命名不能以数字开头或者特殊字符
函数名不区分大小写,这个与变量不一样
自定义函数中的变量是局部的,函数外不生效
使用global全局变量时,可使用函数外的变量
为了防止全局变量的混乱使用可以用unset($var)删除一个变量
在php函数中我们可以给某些参数赋默认值
Php函数默认是值传递,如果需要地址传递可以使用 &
//给一个函数传递一个对象,实际上是传递的一个地址,数组是值传递
二进制:所谓二进制就是逢二进一,二进制只有两个数,易于电子方式的实现,同时通过0,1组合可以表示任意一个数
原码、反码、补码
二进制最高位是符号位,0表正数,1表负数
正数的原码,反码,补码都一样
负数的反码是原码的符号位不变,其他位取反
负数的补码=负数的反码+1
0的反码补码都是0
Php没有无符号数
在计算机运算的时候都是以补码的方式来运算的
位运算一览表:
$a &$b 按位与,两位全为1,结果为1
$a |$b 两位只要有一位为1,结果为1
$a ^$b 一个为0,一个为1,结果为1
~$a 0变1,1变0
>> 算术右移,低位溢出,符号位不变,并用符号位补溢出的高位
<< 算术左移,符号位不变,低位补0
数组、排序、查找
:可以用于存放多个数据的数据类型,数组就是关键字和值的集合
:
$arr[0]=123;
$arr[1]=12;
$arr[34]=54;
…….
//$arr是数组名,[0]是关键字,$arr[0]是数组的一个元素,123表示$arr[0]元素对应的值
$arr=array(,”hello”,);
$arr[‘logo’]=”北京”;
$arr[‘a’]=123;
$arr=array(“logo”=>”北京”,”a”=>123,4=>455);
//如果我们创建数组时,没有给某个元素指定关键字,php就会自动的用目前最大的那个下标值(整数)加上1作为该元素的下标(关键字)
//使用小数作为key将自动截断小数部分
//我们可以用print_r($arr);或var_dump($arr);来显示数组情况
//php的数组可以动态的增长
①count($arr);统计数组共有多少个元素
②is_array($arr);判断是否为数组
③$arr=explode(“ “,$str);将字符串$str按空格拆分为一个数组
//使用unset()函数可以销毁某一个数组元素,单数组不会重建索引
:
foreach($arr as $key=>$value){
……
}
:
冒泡排序<选择排序<插入排序法
面向对象
:
类是抽象的,概念的,代表一类事物,比如人类,猫类……
对象是具体的,实际的,代表一个实际事物
类是对象的模板,对象是类的一个个体实例
:
class 类名{
成员属性;
成员方法;
构造方法;
析构方法;}
创建一个对象:
$对象名=new 类名;或 $对象名=new 类名();
访问一个成员属性:
$对象名->属性名;
//如果一个文件专门用于定义类,则命名规范应当这样:
(函数):
当我们把一个函数写到某个类中,则该函数可以成为成员方法
<?php
class person{
public $name;
public $age;
public function speak(){
echo “我是一个好人!”;
}
}
$p1=new person();
$p1->speak();
?>
----细节
成员方法的参数可以是多个
方法可以没有返回值
:
class person{
public $name;
public $age;
public function __construct($iname,$iage){
$this->name=$iname;
$this->age=$iage;
}
}
$p1=new person(“小明”,20);
echo $p1->name;
//结果是 小明
//构造方法没有返回值,在创建新对象后,系统自动调用该类的构造方法
//那个对象使用$this,就是那个对象的地址
//若没有写构造方法,系统会自动生成一个构造方法(public function__construct(){})
//构造方法的默认访问修饰符是public
(函数):
主要作用是用于释放资源(比如释放数据库的链接,图片资源…销毁某个对象)
class person{
public $name;
public $age;
public function __construct($iname,$iage){
$this->name=$iname;
$this->age=$iage;
}
function __destruct(){
释放资源操作;
}
}
$p1=new person(“小红”,13);
$p2=new person(“小花”,15);
//析构方法会自动调用
//析构方法调用顺序是,先创建的对象后被销毁
//析构方法何时被调用:①当程序(进程结束)退出时 ②当一个对象成为垃圾对象时,该对象的析构方法也会被调用,所谓垃圾对象就是指没有任何变量再引用它③在销毁对象前,系统自动调用该类的析构方法
(静态变量):
所有的对象都共享一个变量->静态变量
class child{
public $name;
public static $unm=0;
public function__construct($iname){
$this->name=$iname;}
public function join(){
self::$num+=1;(或child::$num+=1;)
}
}
$child1=new child(“小明”);
$child1->join();
$child2=new child(“小红”);
$child1->join();
echo child::num; //结果为2
(类方法):类方法是属于所有对象实例的,其形式为:
访问修饰符 static 方法名(){}
类方法不能访问非静态属性(变量),只能操作静态变量
普通的成员方法既能操作静态变量,又能操作非静态变量
在类外部:类名::类方法名 或 对象名->类方法名
在类内部: self::类方法名 或 类名::类方法名
:封装,继承,多态
public:表示全局,类内部,外部和子类都可以访问
protected:表示受保护的,只有本类和子类可以访问
private:表示私有的,只有类内部可以访问
//方法没有访问修饰符,默认public
//属性则必须指定访问修饰符
,通常的做法是提供public函数去访问这些变量
也有通过一对__set() 和 __get()方法来操作我们的变量
:
class stu{
public $name;
protected $age;
private $grade;
}
class pupil extends stu{
public function test(){
echo “小学生考试”;
}
}
class graduate extends stu{
public function test(){
echo “研究生考试”;
}
}
//继承只能继承父类的public/protected属性和方法
//子类最多只能继承一个父类(直接继承)如果希望继承多个类的属性和方法,则使用多层继承
//创建某个子类时,默认不会调用父类的构造函数
//如果在子类中希望调用父类的构造方法或其他方法,可以这样处理
类名::方法名(); ② parent::方法名();
//当一个子类的方法和父类的方法完全一样(public/protected),我们称为方法的覆盖/方法重写
基本概念:函数名一样,通过函数的参数个数或者参数类型不同,达到调用同一个函数名,但是可以区分不同的函数
<?php
class A{
public function test1($p){
echo “传一个参数”;
}
public function test2($p){
echo “传两个参数”;
}
function __call($method,$p){
if($method==”test”){
if(count($p)==1){
$this->test1($P);
}elseif(count($p)==2){
$this->test2($P);
}
}
}
}
$a=new A();
$a->test(1);
$a->test(12,14); //结果是输出 传一个参数传两个参数
?>
//php5 默认不直接支持方法重载
//php5 可以通过 __call魔术方法,模拟一个方法效果的效果
//一个对象调用某个方法,而该方法不存在,则系统自动调用 __call 方法
:
__LINE__ 文件中当前行号
__FILE__ 文件的完整路径和文件名
……
(override)
class animal{
public $name;
protected $price;
function cry(){
echo “不知怎么叫”;
}
}
class dog extends animal{
function cry(){
echo “小狗汪汪叫”;
}
}
class pig extends animal{
function cry(){
echo “小猪哼哼叫”;
}
}
$dog1=new dog();
$dog1->cry(); //结果是输出 小狗汪汪叫
//要实现重写,要求子类的那个方法的名字和参数列表个数一模一样,但是并不要求参数的称一样
//如果子类要去调用父类的某个方法,可以使用parent::方法或父类名::方法
//在实现覆盖式,访问修饰符可以不一样,但子类的访问范围>=父类的访问范围
Php笔记 来自淘豆网www.taodocs.com转载请标明出处.