一、语法
- 定界符php代码需要包含在<?php ?>中
<?php
代码段
?>
- 注释方法
<?php
//单行注释
#单行注释
/*
多行
注释
*/
?>
二、 变量
- 定义:$变量名
<?php
$a=10;//定义变量a并赋值为10
/*-----------变量的说明---------------------------
※php为弱类型语言,根据所赋值而确定变量的类型;
※变量名由字母、数字和下划线(_)组成,开头不能为数字;
※变量名区分大小写,如$A和$a为两个不同的变量
------------------------------------------------*/
?>
- 字符串变量
字符串变量并置运算符(.)
<?php
$str1="hello";
$str2="world";
echo $str1." "."$str2";//通过并置符将hello、空格、world连接在一起
?>
关于双引号与单引号
- strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
- substr() 函数返回字符串的一部分
- str_split() 函数把字符串分割到数组中
- explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组
字符串操作函数手册
字符串操作函数手册
- 局部变量与全局变量
函数外定义的变量为全局变量,全局变量可以在除函数内部以外的任何地方调用,在函数内部调用需要加上global
关键字
<?php
$a=10;//定义全局变量$a
function myTest(){
$b=20;//定义局部变量$b
echo $a;
echo $b;
}
myTest();//调用此函数时将会报错,函数内部无法调用全局变量$a
?>
//-------------若在函数中调用则可采取下列方法---------------
<?php
$a=10;
function myTest(){
global $a;//调用全局变量加关键字global
$b=20;
echo $a;
echo $b;
}
myTest();//此时全局变量$a和局部变量$b都可以输出
?>
全局变量存储在一个数组$GLOBALS[index]
中,index为全局变量的变量名,函数内和函数外均可通过此数组的方法调用全局变量
<?php
$a=10;
$b=20;
function add(){
$GLOBALS['a']+=$GLOBALS['b'];
}
add();
echo $a;//此时$a=30
?>
static关键字定义了静态变量,函数内定义的局部变量当函数调用结束后会自动删除,若想保留函数内定义的局部变量的值则需要在函数内定义静态变量
<?php
function add1(){
static $a=10;
$b=20;
$a++;
$b++;
echo $a;
echo $b;
}
add1();//此时输出结果$a=11,$b=21
add1();//$a=12,$b=21
add1();//$a=13,$b=21
?>
三、常量
定义:
- 调用define(a,b,c)函数。a:常量名(常量名需要用双引号括起来);b:常量值;c:是否对常量名大小写敏感(设置为true不区分大小写),此参数可省略,缺省表示区分大小写
- const 常量名=常量值;
常量为全局作用域一旦定义则不能在任何地方改变,可以在任何地方使用
<?php
define("Name","hello PHP",true);//定义不区分大小写的常量
function test(){
echo name;//函数内调用常量
}
test(); //输出"hello PHP"
?>
一些PHP已经定义好的超级全局常量
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
$_SERVER:包含了头信息、路径、以及脚本位置等信息的数组。由web服务器创建。具体可参见菜鸟教程
$_REQUEST:用于接收表单提交的数据
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
用户名:<input type="text" name="username">
<input type="submit" name="">
<?php
$name=$_REQUEST['username'];//定义$name变量来接收用户名,方框内容为input标签的name属性
echo $name;//输出用户名的内容
?>
</body>
</html>
四、 输出的方法
echo和print区别:
- echo可以输出多个字符串,print只能输出一个字符串
- echo没有返回值,print有返回值为1,echo输出速度快于print
<?php
echo "hello","world","!";
print "hello","world";//此行语法错误,print只能输出一个字符串
?>
五、PHP EOF定义字符串
功能:定义一个字符串,开始结束标记一致。
<?php
$a="hello";
$str=<<<EOF
"PHP"
"EOF"
$a
EOF;
//结尾标记须在行首写,以分号结束。
echo $str;
?>
//开始标记与结束标记可以替换成其他标记
//开始标记有三种,不加引号、加双引号、加单引号。不加引号和加双引号作用相同,可以解析字符串中的变量。加单引号不能解析字符串中的变量
六、运算符
运算符
运算符 | 名称及描述 |
---|---|
x and y | 与(x和y全真即真) |
x or y | 或(x、y一真为真) |
x xor y | 异或(x和y相异则为真) |
x&&y | 与(x和y全真即真) |
x || y | 或(x、y一真为真) |
!x | 非 |
== | 等于 (等号左右只要值相同即为真) |
=== | 绝对等于 (等号左右值和类型均相同才为真) |
!= | 不等于(值不同即为真,类型不同无关) |
!=== | 绝对不等于(值或类型有一个不相同即为真) |
and、or与&&、||的区别:
and、or的优先级低于赋值运算符(=),&&、||的优先级大于赋值运算符(=)
<?php
$a=10;
$b=10.0;
$c=20;
$jud1=$a<0 or $b>0;//由于优先级小于(=)所以$jud1的值为假
$jud2=$a<0 || $b>0;//由于优先级大于(=)所以$jud1的值为真
$jud3=$a!=$b;//$jud3的值为假
$jud4=$a!==$b;//$jud4的值为真
?>
三元运算符
格式:a?b:c
说明:a、b、c为表达式,若表达式a为真则返回表达式b的值,a为假返回表达式c的值。
PHP5.3后可支持省略表达式b的内容,a?:c,表达式a为真返回a的值,a为假返回c的值
<?php
$a=10;
$b=0;
$x=$a>0?:$b;//$x的值为true
$y=$a>0?$a:$b;//$y的值为10
?>
七、数组
数组分为:数值数组、关联数组、多维数组
数组的定义:通过array()函数或单独定义
<?php
//----------整体定义(自动分配id)----------
$arr1=array("值1","值2");
//----------单独定义(手动分配id)----------
$arr2[0]="值1";
$arr2[1]="值2";
//----------求数组的长度------------------
$Arr1Num=count($arr1);//求出数组$arr1的长度为2
?>
- 数值数组
数组内容可以为数字或字符串,id从0开始 - 关联数组
关联数组的定义及遍历
<?php
//----------第一种定义方法------------
$People=array("Tony"=>"60","Alice"=>"90","Bob"=>"70");
//----------第二种定义方法------------
$People2['James']="80";
$People2['Jorden']="78";
//----------关联数组的遍历(foreach循环)------------
foreach($People as $x=>$x_value){
echo "$x=".$x."value=".$x_value."<br>";
}
//$x为下标,$x_value为值,名字可以改变
?>
foreach循环:每循环一次,当前数组的值就会被赋给$value
格式:foreach($arr as $value)
{
代码块;
}
<?php
//定义一个数组并输出
$arr=array("one","two","three");
foreach($arr as $value){
echo $value;
}
?>
操作数组的函数手册
操作数组的函数手册
八、函数
- 内建函数:菜鸟教程
- 自定义函数:
格式:
<?php
function 函数名(参数列表
- [ ] List item
){
函数体//函数名命名规则同变量
}
?>
函数的两种调用方法:
九、include、include_once、require、required_once
包含几次就会执行几次代码,当lib.php中定义了函数,则会报错(函数重定义)此时通过include_once进行解决,不管include_once代码写多少次,只包含一次