1、初步了解PHP
+ php是一种运行在服务端的跨平台的脚本语言。

+ php语法:

<?php echo "welcome!"; ?>

php像javascript语言一样可以将标签代码放在html中,echo是php中的输出关键字

+ php中的字符串可以用单引号也可以用双引号,字符串连接符是"."号和其他语言用"+"不同

 <?php echo 'youyi'."最美"; ?>

+ 输出多条语句

 <?php
echo "欢迎同学们!";
echo "Welcome" . " to you!";
echo 1+2+3+4+5;
?>

2、变量

+ 用$标识符定义变量:$var

+ 规则:变量名必须以字母或下划线"_"开头
        变量名只能由字母、数字、以及下划线"_"组成,还可以包含汉字
        变量名不能包含空格,当变量名由多个单词组成时,可以用下划线隔开,也可以用驼峰式命名法来命名
  注:php中的变量名区分大小写
 
+ php中的数据类型:4种标量类型
                            2种复合类型
                            2种特殊类型

+ var_dump()方法是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.

+ 当变量值和字符串一起输出时,用双引号括起来.

+ 当字符串很长时,可以用Heredoc结构的形式来输出字符串:

<?php
$string1= <<<god
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥"
god;
echo $string1;
?>

定界符<<< 来表示字符串,god是自己可以随意定义的标识符,最后用同样的标识符来做结尾。

3、常量
+ 用define定义常量:

<?php
$p = "PII";
define("PI",3.14);
define($p,3.14); echo PI;//3.14
echo "<br />";
echo PII;//3.14
?>

+ 系统自定义常量,可以直接拿来使用:
   _FILE_:当前文件在服务器的物理位置
   _LINE_:当前代码行数
   PHP_VERSION:当前解析器的版本号
   PHP_OS:当前PHP版本的操作系统名称
   
+ 常量取值的两种方式:
  1、直接使用常量名
  2、用constant函数

<?php
$p="";
//定义圆周率的两种取值
define("PI1",3.14);
define("PI2",3.142);
//定义值的精度
$height = "中";
//根据精度返回常量名,将常量变成了一个可变的常量
if($height == "中"){
$p = "PI1";
}else if($height == "低"){
$p = "PI2";
}
$r=1;
$area = constant($p)*$r*$r;
echo $area;
?>

+ 判断常量是否被定义:defined函数

4、运算符
+ php中的2种赋值运算符:"="(将值拷贝一份赋值给另一个)和"&"(引用赋值,共享内存)
  $a = $b;或$a = &$b
 
+ 比较运算符:== === != <> !=== < > <= >=
 注:php中的等于==和全等===规则和JavaScript中的类似
 
+ 逻辑运算符:逻辑与(and、&&),逻辑或(or、||),逻辑异或(xor),逻辑非(!)

+ 字符串连接运算符:"."或".="

+ 错误控制运算符:@
 
+ 算数运算符、三元运算符和其他语言类似

5、语言结构语句
+ 遍历数组的两种方式:只取数字不取下标foreach(数组 as $v)
                      取数字和下标foreach(数组 as $r => $v)

<?php
$students = array(
'2010'=>'令狐冲',
'2011'=>'林平之',
'2012'=>'曲洋',
'2013'=>'任盈盈',
'2014'=>'向问天',
'2015'=>'任我行',
'2016'=>'冲虚',
'2017'=>'方正',
'2018'=>'岳不群',
'2019'=>'宁中则',
);//10个学生的学号和姓名,用数组存储 //使用循环结构遍历数组,获取学号和姓名 foreach($students as $r => $v)
{
echo $r." ".$v;//输出(打印)姓名
echo "<br />";
}
?>

6、数组
+ 数组分为两种:索引数组和关联数组
+ 数组基本操作:

<?php
//索引数组赋值3种方式
$fruit = array("苹","梨子",'3'=>'香蕉');
$fruit[2]='柿子';
print_r($fruit);//Array ( [0] => 苹 [1] => 梨子 [3] => 香蕉 [2] => 柿子 )
//访问索引数组内容
echo '<br>';
print_r($fruit['0']);//苹
//遍历数组2种方式
for($i=0;$i<4;$i++){
echo '<br>数组第'.$i.'值是:'.$fruit[$i];
} foreach($fruit as $k=>$v){
echo '<br>第'.$k.'值是:'.$v;
} //关联数组,关联数组和索引数组的基本操作一样
$fruit2 = array(
'apple' => "苹果",
'banana' => "香蕉",
'pineapple' => "菠萝"
);
echo '<br>';
print_r($fruit2);
?>

7、函数
+ 自定义函数
+ 可变函数
+ 内置函数
+ 判断函数是否存在-function_exists() (检测类是否存在-class_exists;检测文件是否存在-file_exists)

8、类和对象
+ php中访问对象属性的方法或属性用->
+ 创建对象的方法:

<?php
class Car {
public $name = '汽车';
public function getName() {
return $this->name;
}
}
//1.通过new关键字来创建
$car = new Car();
echo $car->getName();
//2.通过变量来创建
$className = 'Car';
$car = new $className();
echo "<br>";
echo $car->getName();
?>

+ php中也有三种访问控制的关键字:private、public、protected

//默认为公有,公有的类成员可以在任何地方被访问,保护的类成员可以被自身、子类、父类访问,私有的类成员只能被其定义所在的类访问
//如果构造函数定义成了私有方法,则不允许直接实例化对象,可以通过静态方法进行实例化
class Car {
private $speed = 0;//属性必须定义访问控制 public function getSpeed() {
return $this->speed;
} protected function speedUp() {
$this->speed += 10;
} //增加start方法,使他能够调用受保护的方法speedUp实现加速10
public function start() {
$this->speedUp(); }
}
$car = new Car();
$car->start();
echo $car->getSpeed();//10

+ 面向对象中function被称之为方法,面向过程中function称为函数

+ 关键字static修饰的方法为静态方法,不需要实例化,直接用::访问(类名::方法名)

class Car {
private static $speed = 10;
//静态方法中,$this伪变量不允许使用。可以使用self(自己的),parent(父类的),static在内部调用静态方法与属性
public function getSpeed() {
return self::$speed;
} //在这里定义一个静态方法,实现速度累加10
public static function speedUp() {
return self::$speed+=10;
} } $car = new Car();
Car::speedUp(); //调用静态方法加速
echo $car->getSpeed(); //调用共有方法输出当前的速度值

+ 构造函数和析构函数

<?php
class Car {
//增加构造函数与析构函数
function _construct() {
print "构造函数\n";
} function _destruct() {
print "析构函数\n";
}
} class Truck extends Car {
function _construct() {
print "子类构造函数\n";
parent::_construct();//调用父类构造函数
}
}
$car = new Truck();//会调用子类构造函数
unset($car);//销毁对象会调用析构函数
?>

+ php中的重载

方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。

<?php
class Car {
public $speed = 10; //在这里使用重载实现speedDown方法
//注意call前面的横杠是两个下横杠加起来的
//$name是不存在的函数名,$args是不存在的函数中的参数
public function __call($name, $args) {
if($name == 'speedUp') {
$this->speed += 10;
} else if($name == 'speedDown') {
$this->speed -= 10;
}
}
}
$car = new Car();
$car->speedDown(); //调用不存在的speedDown方法
echo $car->speed;
?>

+ php中的"=="和"==="

判断同一个类的两个实例中的属性是否相等用==

判断两个变量是否为同一个对象的引用时用 ===

class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo '=='; //true
if ($a === $b) echo '==='; //false

+ 通过关键字clone来复制对象,它会调用__clone()方法

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;
if ($a == $b) echo '=='; //true
if ($a === $b) echo '==='; //false

+ 通过serialize()将对象序列化成字符串,unserialize()将字符串反序列化成对象

2016.9.28更新

PHP基础学习笔记(一)的更多相关文章

  1. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  2. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  3. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  4. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  5. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  6. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  7. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  8. C#RabbitMQ基础学习笔记

    RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...

  9. handlebars.js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

  10. 基础学习笔记之opencv(6):实现将图片生成视频

    基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C+ ...

随机推荐

  1. dedecms 蜘蛛抓取设置 robots.txt

    我们可以用robots.txt屏蔽蜘蛛文件来跟蜘蛛来达成一个协议,但现在很少注重,其实用好robots.txt屏蔽蜘蛛文件,能给你的网站提高权重,接下来重庆SEO讲一下robots.txt屏蔽蜘蛛文件 ...

  2. 解决Eclipse Pydev中import时报错:Unresolved import

    在安装 图像处理工具包 mahotas 后,在eclipse中尝试import mahotas时,出现Unresolved import错误,按快捷无法自动生成代码提示 但是,程序运行时可以通过,在命 ...

  3. jsonp跨域请求数据实例——手机号码查询

    前言 网上有很多开放的api,我们在本地通过ajax获取数据时,总会碰到一个问题,那就是跨域!如果不借助php等,仅仅通过js怎么解决跨域的问题呢?或许jsonp是个不错的选择. 知识准备 上篇博客 ...

  4. jquery节点操作

    很久没有jquery写东西了,最近使用jquery的时候发现很多节点的操作都不太熟悉了,于是就进行了一个小小的总结. 创建节点:var dom=$('<div></div>') ...

  5. codeforces hungry sequence 水题

    题目链接:http://codeforces.com/problemset/problem/327/B 这道题目虽然超级简单,但是当初我还真的没有想出来做法,囧,看完别人的代码恍然大悟. #inclu ...

  6. java 日期格式 毫秒

    参考URL:http://www.busfly.net/csdn/post/java_string_fomat_date_time_simpledateformat.html 关键代码: java.t ...

  7. spark_updateStateByKey

    java核心代码 JavaPairDStream<String, Integer> wordCounts = pair.updateStateByKey(new Function2< ...

  8. 论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?

    Is Faster R-CNN Doing Well for Pedestrian Detection? ECCV 2016   Liliang Zhang & Kaiming He 原文链接 ...

  9. java jfinal + ajaxfileupload.js 上传

    功能上传 需求:同时上传多张图片 前端:jquery.ajaxfileupload.js 后端:jfinal upload.htm <html> <body> <div ...

  10. LUA_linux的安装

    安装 进入官方站点(http://www.lua.org/download.html )下载最新的安装包.当前是 Lua 5.2.0 wget -c http://www.lua.org/ftp/lu ...