PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器;可以放在文档中的任何位置;PHP 以 尖括号、问号、PHP 问号、尖括号结束:
//这里是我们要写的PHP代码
?>
PHP 文件的默认文件扩展名是 ".php"; 通常包含 HTML 标签和一些 PHP 脚本代码
echo 是在PHP里面最常用的一个输出、输出显示功能的命令。
可以让他显示任何可见的字符。
<!DOCTYPE html>
<html>
<body>
echo "Hello World!";
?>
</body>
</html>
PHP的注释主要有:
单行注释(只注释一行)
// 双斜杠表示单行注释 有时也用 # 表示 但用的比较少,多用 //
多行注释(注释多行)
以 /* 开始 */结束 代表多行注释
注释实例:
/*
author:李子
date:2020-06-28
功能:这是一个php的多行注释的例子
*/
//声明一个string变量
$string ="欢迎学习php!";
//显示输出string字符串变量
echo $string;
?>
变量是用于存储数据和信息的"容器":
php变量的规范:
$
开始,例如声明一个价格的变量:$price
( $ 叫作美元符,英文单词:dollar)PHP 是一门弱类型语言,没有声明变量的命令,变量在第一次赋值给它的时候被创建 不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型。 而在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
$string="Hello world!";
$x=5;
$y=10;
?>
变量的作用域是脚本中变量可被引用/使用的部分
PHP 有四种不同的变量作用域:
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global
关键字
header("Content-type:text/html;charset=utf-8");
$num=5; // 全局变量
function myDemo()
{
$num2=10; // 局部变量
echo "测试函数内变量:
"
;
echo "变量 num 为: $num"; //输出错误 Notice: Undefined variable:
echo "
";
echo "变量 num2 为: $num2";
}
myDemo();
echo "测试函数外变量:
"
;
echo "变量num 为: $num";
echo "
";
echo "变量 num2 为: $num2"; //输出错误 Notice: Undefined variable:
运行结果:
在以上实例中 myDemo() 函数定义了 $num和 $num2 变量。 $num变量在函数外声明,所以它是全局变量 , $num2变量在函数内声明所以它是局部变量。
当我们调用myDemo()函数并输出两个变量的值, 函数将会输出局部变量 $ynum2 的值,但是不能输出 $num 的值,因为 $num变量在函数外定义的,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。在myDemo() 函数外输出两个变量的值,函数将会输出全局部变量 $num 的值,但是不能输出 $num2 的值,因为 $num2 变量在函数中定义,属于局部变量。
注 你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。
global 关键字用于函数内访问全局变量
$n1=5;
$n2=10;
function myDemo(){
global $n1,$n2; //使用global关键字
$n2=$n1+$n2;
}
myDemo();
echo $n2; //输出10
?>
当一个函数执行完成后,它的所有变量通常都会被删除清除。然而,有时候希望某个局部变量不要被删除。可以在第一次声明变量时使用 static 关键字:
function myDemo()
{
static $n=0;
echo $n;
$n++;
}
myDemo();
echo "
";
myDemo();
echo "
";
myDemo();
echo "
";
myDemo();
?>
参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分:
function myDemo($num)
{
echo $num;
}
myDemo(type);
?>
在 PHP 中有两个基本的输出方式: echo 和 print。
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
echo "PHP
";
echo "Hello world!
";
echo "欢迎学习php!
";
echo "Welcome", " to", " studing";
?>
print 跟echo同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。
$str = "PHP
";
print $str;
print "Hello world!"."
";
print "欢迎学习php!"."
";
print "Welcome to studing php";
?>
结果:
注意:echo 和 print 区别:
· echo - 可以输出一个或多个字符串
· print - 只允许输出一个字符串,返回值总为 1
· echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
PHP的数据类型包括以下几种,
查看数据类型的方式:
var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值。
$a = 6868; //十进制
var_dump($a);
echo "
";
$a = -10; // 负数
var_dump($a);
echo "
";
$a = 0x8C; // 十六进制数
var_dump($a);
echo "
";
$a = 047; // 八进制数
var_dump($a);
?>
在PHP语言中声明字符串有三种方式:
$a = "Hello world!";
echo $a;
?>
所谓浮点类型,类似于数学里面的小数
//声明变量f的值为2323.3123
$f = 2323.3123;
echo $f;
echo "
";
//声明变量$fl 的值为0.8873
$fl = 0.4567;
var_dump($fl);
?>
布尔类型就是:真和假
//声明一个变量为布尔
$buer = true;
//声明一个变量布尔值为false
$bool = false;
?>
数组就是在一个变量中存储多个类型相同的值
$languages=array("php","java","c语言","python","C#");
var_dump($languages);
?>
对象是存储数据和有关如何处理数据的信息的数据类型,在 PHP 中,必须明确地声明对象。
可以使用 class 关键词声明对象的类。类是包含属性和方法的结构
class myCars
{
var $name;
function myCars($name="奔驰") {
$this->name = $name;
}
function what_name() {
return $this->name;
}
};
?>
空(null)不是false,不是0,也不是空格,代表没有。
主要有以下三空情况会产生空(null)类型:
//声明变量为null
$n = null;
var_dump($n);
//var_dump显示输出变量$meiyou,看看结果是什么?
var_dump($null);
//声明一个变量$string的值为php的字符串
$string = 'php';
//unset销毁掉一个变量
unset($string);
var_dump($string);
?>
empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true
$string = null;
if(empty($string)){
echo '执行了真';
}else{
echo '行了假';
}
?>
isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有一个变量为null,则返回false。否则,则返回true。
$x = 10;
$y = false;
$i = 0;
$j = null;
$result = isset($x , $y , $i , $i);
var_dump($result);
?>
结果:
unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉。
字符串变量用于存储并处理文本和包含有字符的值。
在创建字符串之后,我们就可以对它进行操作了。可以直接在函数中使用字符串,或者把它存储在变量中。
$string="Hello world!";
echo $string;
?>
在 PHP 中,只有一个字符串运算符,并置运算符.(点)用于把两个字符串值连接起来。
$str="大家好!";
$str2="我是程序媛!";
echo $str . " ++++" . $str2;
?>
strlen() 函数返回字符串的长度(字符数)。
注意:在UTF-8下 strlen 把中文字符算成 3 个字节,英文,空格,符号占 1 个字节。
$str="李";
echo strlen($str);
echo "
";
echo strlen("Hello world!");
?>
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
echo strpos("Hello world!","world");
?>
结果:
world在第六个字符开始
注意:字符串中第一个字符的位置是 0,而不是 1
常量可以理解为:永久不变的值,常量值被定义后,在脚本的其他任何地方都不能被改变,有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。常量名可以小写,但是通常大写
注释:与变量不同,常量贯穿整个脚本是自动全局的。
设置常量,使用 define() 函数 - 它使用三个参数:
define("STRING", "Welcome to PHP!");
echo STRING;
?>
结果:
常量是全局的,常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用
常量名 | 说明 |
---|---|
LINE | 当前所在的行 |
FILE | 当前文件在服务器的路径 |
FUNCTIOIN | 当前函数名 |
CLASS | 当前类名 |
METHOD | 当前成员方法名 |
PHP_OS | PHP运行的操作系统 |
PHP_VERSION | 当前PHP的版本 |
TRAIT | Trait 的名字,php5.4新加 |
DIR | 文件所在的目录 |
NAMESPACE | 当前命名空间的名称(区分大小写) |
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
+ | 加法 | $a + $b | $a 与 $b 求和 |
- | 减法 | $a - $b | $a 与 $b 的差数 |
* | 乘法 | $a * $b | $a与 $b 的乘积 |
/ | 除法 | $a/ $b | $a与 $b的商数 |
% | 取余也叫取模、求模 | $a % $by | $a 除 $b 的余数 |
$a=5;
$b=10;
echo ($a + $b)."
";
echo ($a - $b)."
";
echo ($a * $b)."
";
echo ($a % $b)."
";
?>
我们在数学里面把 = (一个等号)叫作赋值运算符,即:把等号右边的值,赋值给等号左边的变量,左边的变量就为右边的值。
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
+ | 加法 | $a + $b | $a 与 $b 求和 |
- | 减法 | $a - $b | $a 与 $b 的差数 |
* | 乘法 | $a * $b | $a与 $b 的乘积 |
/ | 除法 | $a/ $b | $a与 $b的商数 |
% | 取余也叫取模、求模 | $a % $by | $a 除 $b 的余数 |
符号 | 举例 | 等价式 |
---|---|---|
+= | $a += $b | $a = $a+ $b |
-= | $a -= $b | $a = $a - $b |
*= | $a *= $b | $a = $a * $b |
/= | $a /= $b | $a = $a/ $b |
%= | $a %= $b | $a = $a % $b |
= | $a .= $b | $a = $a. $b |
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
. | 串接 | $str1 = “Hello” $str2 = $str1 . " world!" | 现在 $str2 包含 “Hello world!” |
.= | 串接赋值 | $str1 = “Hello” $str1 .= " world!" | 现在 $str1 包含 “Hello world!” |
把自己加一或减一
符号 | 说明 |
---|---|
$a++ | 先赋值后加 |
$a– | 先赋值后减 |
++$a | 先加后赋值 |
–$a | 先减后赋值 |
PHP 比较运算符用于比较两个值(数字或字符串):
运算符 | 名称 |
---|---|
== | 等于 |
=== | 全等(完全相同) |
!= | 不等于 |
<> | 不等于 |
!== | 不全等(完全不同) |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
运算符 | 名称 |
---|---|
and | 与 |
or | 或 |
xor | 异或 |
&& | 与 |
|| |
或 |
! | 非 |
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
+ | 联合 | $x + $y | $x 和 $y 的联合(但不覆盖重复的键) |
== | 相等 | $x == $y | 如果 $x 和 $y 拥有相同的键/值对,则返回 true。 |
=== | 全等 | $x === $y | 如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。 |
!= | 不相等 | $x != $y | 如果 $x 不等于 $y,则返回 true。 |
<> | 不相等 | $x <> $y | 如果 $x 不等于 $y,则返回 true。 |
!== | 不全等 | $x !== $y | 如果 $x 与 $y 完全不同,则返回 true。 |
PHP 数组运算符用于比较数组
三目运算符的格式:
(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3
if 语句用于在指定条件为 true 时执行代码。语法:
if(条件){
条件为真得时候执行
}
$age=19;
if($age<18){
echo "成年人";
}//输出成年人
?>
使用 if…else 语句在条件为 true 时执行代码,在条件为 false 时执行另一段代码。语法:
if(条件){
条件为真得时候执行
} else {
条件为假得时候执行
}
$age=19;
if($age>18){
echo "成年人";
}else{
echo "未成年人"}//输出成年人
?>
if....elseif...else 语句来选择若干代码块之一来执行。语法:
if(条件1){
条件1为真得时候执行
} elseif(条件2) {
条件2为真得时候执行
}
else{
条件不满足的时候执行
}
$age=19;
if($age>18){
echo "成年人";
}esleif($age=18){
echo "成年人"
}else{
echo "未成年人"}//输出成年人
?>
switch 语句用于根据多个不同条件执行不同动作。语法:
switch(整型表达式)
{
case 常量表达式1:语句1
case 常量表达式2:语句2
//……
case 常量表达式n-1:语句n-1
default:语句n
}
$w = date("w");
switch($w){
case 1 : echo "今天是星期一";break;
case 2 : echo "今天是星期二";break;
case 3 : echo "今天是星期三";break;
case 4 : echo "今天是星期四";break;
case 5 : echo "今天是星期五";break;
case 6 : echo "今天是星期六";break;
case 0 : echo "今天是星期日";break;
default : echo "你输入有误!";
}
?>
数组可以存入多个不同类型的数据,是一个复合数据类型。可以使用array()来初始化数组,每个数组元素之间使用逗号分隔
header("Content-type:text/html;charset=utf-8"); //设置编码
$array=array(100,1.34,true,"php",);
echo ''
;
var_dump($array);
echo '';
?>
只要数组里面有一个为字符串的数组,就为关联数组。
声明关联数组必须要指定字符串的下标和必须要使用键值对应符。
$arr=[ //用[]创建数组
'name'=>'张三',
'age'=>'22',
'gender'=>'male'
];
echo ""
;
var_dump($arr) ;
echo"
"
?>
结果:
注意:声明关联数组是 键名 => 值,在关联数组可以有索引数组的元素
函数用于返回数组的长度(元素数):
$name=Array('张三','李四','王五');
echo count($name);
?>
for循环是一个单纯的计数型循环,而索引数组的下标为整型的数值。可以通过for循环来遍历索引数组。
$arr=Array('张三','李四','王五');
$arrlength=count($arr);
for($x=0;$x<$arrlength;$x++){
echo $arr[$x];
echo "
";
}
?>
专门用来循环数组的。基本语法:
foreach( 要循环的数组变量 as [键变量 =>] 值变量){
//循环的内容
}
?php
$arr=[
'name'=>'张三',
'age'=>'22',
'gender'=>'male'
];
foreach($arr as $key=>$value){
echo $key.": ".$value."
";
};
?>
结果:
注意:$key 和$value并不是变量名必须得为这两个名字。命名可以为其他的,如 $k => $val是一样的。 清楚键赋值 给了哪个变量,值赋值给了另外的哪个变量就可以了。
header("Content-type:text/html;charset=utf-8"); //设置编码
$data = array(
0 => 'java',
10 => 'php',
20 => 'c#',
30 => 'python',
);
foreach($data as $k => $v){
echo $k . '+++++' . $v .'
';
}
?>
数组中的元素可以按字母或数字顺序进行降序或升序排列。
`sort大多是用来排序数字索引数组的,如果把一个关联数组放到sort里排序,那么数组的键会丢失
$arr=array(10,2,81,45,Y,M,w,s,a,H,35,A,P);
sort($arr);
print_r($arr);
?>
使用数组的值进行排序
$age=array("张三"=>"25","李四"=>"18","王五"=>"23","赵六"=>"28");
asort($age);
print_r($age);
?>
对键进行排序
$age=array("张三"=>"25","李四"=>"18","王五"=>"23","赵六"=>"28");
ksort($age);
print_r($age);
?>
while - 只要指定条件为真,则循环代码块
do…while - 先执行一次代码块,然后只要指定条件为真则重复循环
for - 循环代码块指定次数
foreach - 遍历数组中的每个元素并循环代码块
while是一个布尔型循环,while(布尔判断)的值为true就执行大括号括起来的代码。如果为假就停出去,执行后续代码。语法:
while (条件为 true){
//执行的代码;
}
header("Content-type:text/html;charset=utf-8"); //设置编码
$n=1;
while($n<=5){
echo "这个数是:".$n ."
";
$n++;
}
?>
do…while与while的区别是,它们的值的检查时机不同。
do-while 不论while判断是否成立,先执行一次代码代码块循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)。而while循环会检查布尔判断区域,成立则执行。不成立则不执行。
语法:
do{
//执行的代码;
}while (条件为 true);
header("Content-type:text/html;charset=utf-8"); //设置编码
$n=1;
do {
echo "这个数字是:$n
";
$n++;
} while ($n<=5);
?>
结果与上面是一样的
for 循环是 PHP 中的一种计数型循环,语法:
for(表达式1,表达式2,表达式3){
需要执行的代码
}
表达式1 是初始化赋值,可以同时赋值多个代码;表达示2 在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。如果值为 FALSE,则终止循环;表达示3 在每次循环之后被求值。
header("Content-type:text/html;charset=utf-8"); //设置编码
for($n=1;$n<5;$n++){
echo $n."
";
}
?>
语法
foreach( 要循环的数组变量 as [键变量 =>] 值变量){
//循环的结构体
}
这是一个固定用法,将要循环的数组放进去,as 是一个固定的关键字,后面的键变量是可选的,随意定义一个变量,每次循环的时候,foreach这个语法会把键取出来赋值到键变量里面
header("Content-type:text/html;charset=utf-8"); //设置编码
$arr = array(
'str' => 'java',
'str2' => 'php',
'str3' => 'python',
);
foreach($arr as $key => $value){
echo $key . '=>' . $value . '
';
}
?>