开始标记<?php? 和结束标记 ?>中间写 PHP 代码
当解析一个文件时,PHP 会寻找起始和结束标记,也就是告诉php 开始和停止解析二者之间的代码。此种解析方式使得PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略
echo? ----->可以输出一个或多个字符串,用逗号(,)隔开
print?? ----->只允许输出一个字符串
<?php
echo 111,222;
print 345;
?>
//? ----->单行注释
/*
*/?? ------>多行注释
<?php
$a='ooii';
echo $a;
?>
=
<?php
$a_new='ooii'; //下划线命名法
echo $a_new;
$a_New='ooi'; //小驼峰命名法
echo $a_New;
$A_New='oo'; //大驼峰命名法
echo $A_New;
?>
echo 输出数据值,开发时使用
var_dump 可以打印数据类型和值,测试时使用?
布尔型通常用于条件判断
<?php
$x = true;
var_dump($x);
echo '<hr>';
$y = false;
var_dump($y);
?>
<?php
$number = 0;
var_dump($number);
echo '<hr>';
$number = 67;
var_dump($number);
echo '<hr>';
$number = -322;
var_dump($number);
?>
带小数部分的数字
<?php
$number = 10.03;
var_dump($number);
echo '<hr>';
$number = -88.23;
var_dump($number);
?>
<?php
$str ='我是欧阳';
var_dump($str);
echo '<hr>';
$str = 'My name is ou yang';
var_dump($str);
?>
?
一个汉字三个长度
ps
这里说明一下单引号和双引号的区别
简而言之 就是双引号可以解析变量
在单引号的情况下,我们在第二个str变量中引入第一个str变量
发现显示出的还是$str
<?php
$str ='我是欧阳';
var_dump($str);
echo '<hr>';
$str = '$str My name is ou yang';
var_dump($str);
?>
但是我们如果使用双引号来包裹第二个变量
<?php
$str ='我是欧阳';
var_dump($str);
echo '<hr>';
$str = "$str My name is ou yang";
var_dump($str);
?>
?就可以发现第一个变量被引入了
<?php
$null;
var_dump($null);
echo '<hr>';
$null ='';
var_dump($null);
echo '<hr>';
$null = null;
var_dump($null);
?>
?
<?php
$arr = array();
var_dump($arr);
$arr = [];
var_dump($arr);
?>
<?php
$arr = array(
'ooii',
'ww',
'y'
);
var_dump($arr);
echo '<hr>';
$arr = [
'ooii',
'ww',
'y'
];
var_dump($arr);
?>
输出键为0的值
<?php
$arr = array(
'ooii',
'ww',
'y'
);
var_dump($arr[0]);
?>
自定义键
<?php
$arr = array(
'qwe'=>'ooii', //ooii这一值的键定义为qwe
'ww',
'y'
);
var_dump($arr['qwe']);
?>
输出一整个数组
print_r
<?php
$arr = array(
'qwe'=>'ooii',
'ww',
'y'
);
print_r($arr);
?>
看下print_r与var_dump的区别
第一行是print_r
第二行是var_dump
.
可以连接多个数据
echo 'wy is:' . $arr[qwe];
<?php
$arr = array(
array(
'ooii'
),
array(
'ww'
),
array(
'yy'
),
);
print_r($arr);
echo '<hr>';
var_dump($arr);
?>
<?php
$arr = [
[
'name' => '欧阳',
'school' => 'PHP中文网',
'gongfu' => [
'PHP',
'小程序',
'layui',
'Thinkphp'
]
],
[
'name' => '西内',
'school' => 'PHP中文网',
'gongfu' => [
'PHP',
'Thinkphp',
'Laravel',
'实战项目'
]
],
[
'name' => '强灭绝',
'school' => 'PHP中文网',
'gongfu' => [
'HTML',
'PHP',
'layui',
'Thinkphp'
]
]
];
print_r($arr)
?>
输出某一键值
echo $arr[0]['name'];
<?php
$arr = array(
'ouyang' => '欧阳',
'ximen' => '西门',
'miejue' => '强灭绝'
);
foreach ($arr as $v) { //as 是给予 $v是循环每次value的值
echo $v;
echo '<hr>';
}
?>
我们可以通过num循环来体现一下
<?php
$arr = array(
'ouyang' => '欧阳',
'ximen' => '西门',
'miejue' => '强灭绝'
);
$num=1;
foreach ($arr as $v) {
echo $v;
$num=$num+1;
echo $num;
echo '<hr>';
}
?>
那么刚才循环的是值 我们看看能不能循环key
这里需要=>
<?php
$arr = array(
'ouyang' => '欧阳',
'ximen' => '西门',
'miejue' => '强灭绝'
);
foreach ($arr as $k =>$v) {
echo $k.$v;
echo '<hr>';
}
?>
<?php
$arr = [
[
'name' => '强欧阳',
'school' => 'PHP中文网'
],
[
'name' => '西门',
'school' => 'PHP中文网'
],
[
'name' => '强灭绝',
'school' => 'PHP中文网'
]
];
foreach ($arr as $k => $v) {
print_r($v);
echo '<hr>';
}
?>
<?php
$arr = [
[
'name' => '强欧阳',
'school' => 'PHP中文网'
],
[
'name' => '西门',
'school' => 'PHP中文网'
],
[
'name' => '强灭绝',
'school' => 'PHP中文网'
]
];
foreach ($arr as $k => $v) {
echo $v['name'].$v['school'];
echo '<hr>';
}
?>
?
这里可以看出循环先从外层数组开始
<?php
$arr = [
[
'name' => '强欧阳',
'school' => 'PHP中文网'
],
[
'name' => '西门',
'school' => 'PHP中文网'
],
[
'name' => '强灭绝',
'school' => 'PHP中文网'
]
];
foreach ($arr as $k => $v) {
foreach($v as $vv){
echo $vv;
echo '<hr>';
}
}
?>
若str变量有值 则返回 i am ooii
否则error
$str='ooii';
echo $str ? 'i am ooii' : 'error';
$str='';
echo $str ? 'i am ooii' : 'error';
?
<?php
$wy='ooii';
if($wy){
echo 'i am ooii';
}
如果wy变量有值,则返回i am ooii
<?php
$wy='';
if($wy){
echo 'i am ooii';
}else{
echo 'error';
}
wy变量为空,则返回 error
wyy有值,则返回yes
<?php
$wy='';
$wyy='ooii';
if($wy){
echo 'i am ooii';
}elseif($wyy){
echo 'yes';
}else{
echo'error';
}
如果wy wyy的值都为空,则返回error
<?php
$wy='';
$wyy='';
if($wy){
echo 'i am ooii';
}elseif($wyy){
echo 'yes';
}else{
echo'error';
}
进行条件匹配
<?php
$wy='ooii';
switch($wy){
case 'ooii':
echo 'i am ooii';
break;
case 'oi':
echo 'error';
break;
default:
echo $wy;
}
这里php版本需要到8
<?php
$wy = 'aaa';
switch ($wy) {
case 'ooii':
echo 'i am ooii';
break;
case 'oi':
echo 'error';
break;
default:
echo $wy;
}
echo match ($wy) {
'aaa' => '啊啊啊',
'bbb' => '不不不',
'ccc' => '踩踩踩'
};
?>
与swtich区别
match 是表达式 要增加结束符号
match 可以返回给变量 或者直接输出
match 只支持单行表达式
match 匹配进行严格比较
<?php
if($wy){
echo 'ooii';
}
if(isset($wy)){
echo 'ooi';
}
if(empty($wy)){
echo 'oo';
}
?>
2.什么是函数
根据函数的提供者(编写者),分为二类
PHP 的真正力量来自它的函数:它拥有超过 1000个内建的函数
<?php
//将宇符串转化为小写
$ouyang ='OUYANGKE';
echo strtolower($ouyang);
echo '<hr>';
//将字符串转化为大写
$miejue ='miejueshitai';
echo strtoupper($miejue);
echo '<hr>';
//将字符串分割为数组
$php='欧阳克,灭绝师太,西门大官人,天';
print_r(explode(',',$php));
echo '<hr>';
//将字符串进行md5加密
$ximen ='西门大官人';
echo md5($ximen);
?>
<?php
$arr=[
'欧阳克',
'灭绝师太',
'西门大官人',
'天'
];
//数组中元素的数量
echo count($arr);
echo '<hr>';
// 把数组元素组合为字符串
echo implode(',',$arr);
echo '<hr>';
//数组中是否存在指定的值
echo in_array('天',$arr);
echo '<hr>';
//删除数组中的最后一个元素
array_pop($arr);
print_r($arr);
?>
?
//创建函数
function fun_name(参数列表)
{
//函数体:由一条或多条语句组成,可以为空
}
<?php
//创建函数
function fun_name()
{
return'我是wy';
}
// 调用函数
echo fun_name();
?>
<?php
//创建函数
function fun_name($name)
{
return'我是:'.$name ;
}
//调用函数
echo fun_name('ooii');
?>
<?php
// 创建函数
function fun_name($name, $school = 'PHP中文网')
{
return '我是:' . $name . ' from ' . $school;
}
// 调用函数
echo fun_name('ooii', '过去');
?>
?
<?php
var_dump(120+80);
echo '<hr>';
var_dump(120-80);
echo '<hr>';
var_dump( 120*80);
echo '<hr>';
var_dump(120/80);
echo '<hr>';
var_dump( 120%80);
echo '<hr>';
$num = 120;
var_dump( $num++);
echo '<hr>';
var_dump( $num--);
echo '<hr>';
var_dump( ++$num);
echo '<hr>';
var_dump(--$num);
echo '<hr>';
var_dump(120.80);
echo '<hr>';
$var1 ='PHP讲师:';
$var2 ='欧阳';
var_dump( $var1 .$var2);
<?php
$int = 120;
var_dump($int);
echo '<hr>';
$int += 30;
var_dump( $int);
echo '<hr>';
$int = $int + 30;
var_dump($int);
echo '<hr>';
$int -= 30;
var_dump( $int);
echo '<hr>';
$int *= 30;
var_dump( $int);
echo '<hr>';
$int /= 30;
var_dump( $int);
echo '<hr>';
$int %= 30;
var_dump( $int);
echo '<hr>';
$int .= 30;
var_dump( $int);
?
<?php
var_dump( 100 >100 );
echo '<hr>';
var_dump(100>90);
echo '<hr>';
var_dump( 100 >110 );
echo '<hr>';
var_dump( true >false );
echo '<hr>';
var_dump('php'>'php');
echo '<hr>';
?
<?php
var_dump( 100== 100 );
echo '<hr>';
var_dump( true =='true');
echo '<hr>';
这是不判断类型的 只判断值
<?php
var_dump( 100=== 100 );
echo '<hr>';
var_dump( true ==='true');
echo '<hr>';
判断类型 判断值
两个真 返回真
一个假 返回假
<?php
var_dump( 100 && 30);
echo '<hr/>';
var_dump( true && true );
echo '<hr/>';
var_dump( true and false );
echo '<hr/>';
var_dump( false and false );
echo '<hr/>';
一个真,返回真。
两个真,返回真。
两个假,返回假
<?php
var_dump( 120||80 );
echo '<hr/>';
var_dump( true||true );
echo '<hr/>';
var_dump( true or false );
echo '<hr/>';
var_dump( false or false );
echo '<hr/>';
一个真、返回真。
两个真,返回假。
两个假,也返回假
<?php
var_dump(0 xor 1);
echo '<hr/>';
var_dump( true xor true );
echo '<hr/>';
var_dump( true xor false );
echo '<hr/>';
var_dump(false xor false );
echo '<hr/>';
一个真、返回真。
两个真,返回假。
两个假,也返回假。
<?php
$int = 1;
while($int<10 ){
echo $int;
echo '<hr/>';
$int ++;
}
<?php
$int = 1;
while($int<10 ){
echo $int;
echo '<hr/>';
$int ++;
}
$int = 1;
do{
$int ++;
echo $int;
echo '<hr/>';
}while($int<10);
?while与do while的区别
我们把条件改成int<1? 显而易见条件不满足
但是结果有2
我们看下是谁执行的
<?php
$int = 1;
while($int<1 ){
echo $int;
echo '<hr/>';
$int ++;
echo 'while执行';
}
$int = 1;
do{
$int ++;
echo $int;
echo '<hr/>';
echo 'do while执行';
}while($int<1);
因为while先执行
do while先判断
<?php
for( $int=1;$int<10; $int++){
echo $int;
echo '<hr>';
}
<?php
for( $int=1; $int<10;$int++){
if($int == 5){
//结束当前循环,进入下次循环
continue;
}
var_dump($int);
echo '<hr>';
}
?
<?php
for( $int=1;$int<10;$int++){
if($int == 5){
//结束当前循环,进入下次循环
break;
}
var_dump($int);
echo '<hr>';
}
<?php
# 创建类
class Teacher{
}
# 调用类(实例化)
$ouyang = new Teacher();
$miejue = new Teacher();
$ximen = new Teacher();
<?php
# 创建类
class Teacher{
}
# 调用类(实例化)
$ouyang = new Teacher();
$miejue = new Teacher();
$ximen = new Teacher();
var_dump($ouyang);
var_dump($miejue);
var_dump($ximen);
var_dump($ouyang == $miejue);
echo '<hr/>';
var_dump($miejue == $ximen);
echo '<hr/>';
var_dump($ouyang == $ximen);
<?php
# 创建类
class Teacher{
public $name = 'aa';
public $school = 'PHP中文网';
}
$ouyang = new Teacher();
echo $ouyang->name;
echo '<hr/>';
echo $ouyang->school;
?
<?php
class Teacher{
public $name = 'ooii';
public $school = 'PHP中文网';
public function fun1(){
echo '姓名:ooii,学校:PHP中文网<hr/>';
}
public function fun2(){
return '姓名:ooii,学校:PHP中文网<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
}
// 类实例化
$yangmi = new Teacher();
$yangmi->fun1();
echo $yangmi->fun2();
echo $yangmi->fun3();
echo $yangmi->fun4();
?
<?php
class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun1(){
echo '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun2(){
return '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
}
// 实例化
$obj = new Teacher('aa','bb');
echo $obj->fun4();
<?php
class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun1(){
echo '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun2(){
return '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 实例化
$obj = new Teacher('aa','bb');
echo $obj->fun3();
extends
关键词继承父类 <?php
class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun1(){
echo '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun2(){
return '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
}
// 实例化
$obj = new PHPTeacher('aa','bb');
echo $obj->fun3();
public
默认的, 关键词定义类内、类外、子类都可见protected
关键词定义类内、子类可见,类外不可见private
关键词定义类内可见, 子类、类外不可见<?php
class Teacher{
protected $name;
private $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
protected function fun1(){
echo '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
private function fun2(){
return '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
public function fun5(){
$this->fun1();
}
public function fun6(){
$this->fun2();
}
public function fun7(){
return $this->name;
}
public function fun8(){
return $this->school;
}
}
// 实例化
$obj = new Teacher('西门大官人','PHP中文网');
echo $obj->fun1();
echo $obj->fun2();
echo $obj->name;
echo $obj->school;
$obj2 = new PHPTeacher('西门大官人','PHP中文网');
echo $obj2->fun1();
echo $obj2->fun2();
echo $obj2->fun5();
echo $obj2->fun6();
echo $obj2->fun7();
echo $obj2->fun8();
?
<?php
class Teacher{
protected $name;
private $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
protected function fun1(){
echo '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
private function fun2(){
return '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
public function fun5(){
$this->fun1();
}
public function fun6(){
$this->fun2();
}
public function fun4(){
return '我是重写的方法';
}
}
$obj2 = new PHPTeacher('西门大官人','PHP中文网');
echo $obj2->fun4();
?
<?php
function php(){
}
function php(){
}
?
<?php
namespace one{
function php(){
}
}
namespace two{
function php(){
}
}
<?php
namespace one{
const NAME = '灭绝师太';
$name = '灭绝师太';
function php(){
}
class phpcn{
}
}
namespace two{
const NAME = '西门大官人';
$name = '西门大官人';
function php(){
}
class phpcn{
}
}
namespace three{
echo $name;
echo NAME;
php();
new phpcn();
}
就跟windows目录一样\
namespace{
const NAME = '灭绝师太';
function php(){
}
class phpcn{
}
}
namespace one{
const NAME = '西门大官人';
function php(){
}
class phpcn{
}
}
namespace one\two{
const NAME = '西门大官人';
function php(){
}
class phpcn{
}
}
namespace one\two\three{
const NAME = '西门大官人';
function php(){
}
class phpcn{
}
}