推荐使用
echo "Hello Php"; ?>
这 是一种短标记风格,用于在PHP中嵌入代码块。它是一种较早期的标记风格,但在一些PHP配置中可能被禁用或不推荐使用。
在PHP中分号“ ;”用作语句的结束符号。每个语句应该以分号结尾,以表示语句的结束。
空白和换行符(包括空格、制表符和换行符)通常被解释器忽略,因此它们在大多数情况下对代码的执行没有直接影响。
提示: 通过在适当的位置使用空白和换行符,可以使代码更易于阅读和理解,并且有助于代码的组织和格式化。
//............
单行注释
#..............
单行注释
/*..................*/
多行注释
echo语句:echo是PHP中最常用的输出方法之一,用于将内容输出到浏览器或命令行。
`echo "Hello Php!";`
print语句:print是另一种常见的输出方法,与echo类似,用于将内容输出到浏览器或命令行。
print "Hello Php!";
print_r函数:print_r函数用于打印复杂数据类型(如数组、对象)的可读性较好的表示形式。
$demoArr = ['apple','banana','orange];
print_r($demoArr);
var_dump函数:var_dump函数用于打印变量的详细信息,包括数据类型和值。
$name = "John_lee";
var_dump($name);
printf函数:printf函数用于格式化输出字符串,可以根据指定的格式打印变量的值。
$number = 42;
printf("The answer is %d", $number);
5.1 常用的占位符:
占位符 | 说明 |
---|---|
%d | 带符号的十进制数 |
%u | 不带符号的十进制数 |
%o | 不带符号的八进制数 |
%x | 不带符号的十六进制数(小写字母) |
%X | 不带符号的十六进制数(大写字母) |
%f | 浮点数(本地设置) |
%F | 浮点数(不本地设置) |
%e | 科学计数法(小写e) |
%E | 科学计数法(大写E) |
%s | 字符串 |
%c | ASCII码值相应的字符 |
%b | 二进制数 |
%a | 十六进制数(小写字母) |
%A | 十六进制数(大写字母) |
sprintf函数:sprintf函数与printf函数类似,但它返回格式化后的字符串 (用变量保存),而不是直接将其打印出来。
$number = 42;
$formattedString = sprintf("The answer is %d", $number);
echo $formattedString;
在PHP中,变量名必须以美元符号“ ”开头,后面跟着变量名。变量名可以包含字母、数字和下划线,但必须以字母或下划线开头。此外, P H P 是区分大小写的,因此 ‘ ”开头,后面跟着变量名。变量名可以包含字母、数字和下划线,但必须以字母或下划线开头。此外,PHP是区分大小写的,因此` ”开头,后面跟着变量名。变量名可以包含字母、数字和下划线,但必须以字母或下划线开头。此外,PHP是区分大小写的,因此‘name和
$Name`是两个不同的变量。
PHP是一种动态弱类型语言,这意味着您无需显式声明变量的类型。变量的类型是根据其值自动确定的。例如:
$name = "John"; // 字符串类型
$age = 25; // 整数类型
$isStudent = true; // 布尔类型
要为变量赋值,只需使用赋值操作符(=)将值分配给变量。例如:
$name = "John";
$age = 25;
要在PHP中输出变量的值,可以使用echo
语句或print
函数。例如:
$name = "John";
echo $name; // 输出:John
字符串是由一串字符组成的数据类型。可以使用单引号或双引号来定义字符串。例如:
$name = "John";
$message = 'Hello, World!';
整数是不带小数点的数字。例如:
$age = 25;
浮点数是带有小数点的数字。例如:
$pi = 3.14;
布尔类型表示真或假的值。可以是true
或false
。例如:
$isStudent = true;
数组是一种用于存储多个值的数据结构。可以使用array()
函数或简化的[]
语法来创建数组。例如:
$fruits = array("apple", "banana", "orange");
// 或者
$fruits = ["apple", "banana", "orange"];
对象是类的实例。对象具有属性和方法。例如:
class Person {
public $name;
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
$person = new Person();
$person->name = "John";
$person->sayHello(); // 输出:Hello, my name is John
null
表示变量没有值。例如:
$foo = null;
变量的作用域指的是变量在程序中有效的区域。在PHP中,有以下几种作用域:
局部作用域是指在函数或代码块内部声明的变量。这些变量只在其声明的函数或代码块内部可见。例如:
function myFunction() {
$name = "John"; // 局部变量
echo $name;
}
myFunction(); // 输出:John
echo $name; // 错误:变量$name在该作用域外部不可见
全局作用域是指在函数外部声明的变量。这些变量在整个程序中都可见。例如:
$name = "John"; // 全局变量
function myFunction() {
global $name; // 使用global关键声明全局变量
echo $name;
}
myFunction(); // 输出:John
echo $name; // 输出:John
静态作用域用于在函数调用之间保持变量的持久性。静态变量在函数内部声明,但在函数调用之间保持其值。例如:
function myFunction() {
static $count = 0; // 静态变量
$count++;
echo $count;
}
myFunction(); // 输出:1
myFunction(); // 输出:2
myFunction(); // 输出:3
默认情况下,PHP中的变量是通过值传递的,这意味着在函数内部对变量的更改不会影响函数外部的变量。但是,您可以使用引用传递来让函数修改外部变量。例如:
function increment(&$num) {
$num++;
}
$count = 0;
increment($count);
echo $count; // 输出:1
在函数参数前加上&
符号将参数声明为引用。
在PHP中,您可以使用变量的值作为另一个变量的名称。这被称为动态变量名。例如:
$fruit = "apple";
$apple = "A delicious fruit";
echo $$fruit; // 输出:A delicious fruit
$$fruit
将使用$fruit
的值作为变量名称,即$apple
。
PHP提供了一些特殊的全局变量,称为超全局变量。这些变量在脚本的任何地方都可用,并且不需要使用global
关键字来访问。一些常见的超全局变量包括$_GET
、$_POST
、$_SERVER
等。例如:
echo $_GET['name']; // 输出URL参数中的name值
echo $_POST['email']; // 输出表单提交中的email值
echo $_SERVER['REMOTE_ADDR']; // 输出客户端IP地址
超全局变量 | 说明 |
---|---|
$_GET | 地址栏 GET 提交 |
$_POST | 表单 POST 提交 |
$_FILES | 文件上传变量 |
$_SESSION | 会话变量 |
$_COOKIE | cookie 值变量 |
$_GLOBALS | 全局变量 |
$_REQUEST | 包含$_GET,$_POST,$_COOKIE |
$_SERVER | 服务器环境变量 |
在PHP中,常量名通常使用大写字母,并且建议使用下划线来分隔单词。
例如:
define("PI", 3.14);
define("MAX_SIZE", 100);
//---------------------------------------
define("FRUITS", ["apple", "banana", "orange"]);
echo FRUITS[0]; // 输出:apple
echo FRUITS[1]; // 输出:banana
echo FRUITS[2]; // 输出:orange
在PHP中,可以使用define()
函数来定义常量。define()
函数接受两个参数。例如:
define("PI", 3.14);
自PHP 7.3起,常量默认是大小写敏感的,并且不再支持通过第三个参数来声明大小写不敏感的常量。
定义常量后,可以在整个脚本中使用它们,无论是在函数内部还是在函数外部。要访问常量的值,只需使用常量名称即可。例如:
define("PI", 3.14);
echo PI; // 输出:3.14
PHP还提供了一些预定义的常量,它们在整个脚本中都可用。一些常见的预定义常量包括:
__FILE__
: 当前脚本的文件名(包含完整路径)__LINE__
: 当前脚本中的行号__DIR__
: 当前脚本所在的目录__FUNCTION__
: 当前函数的名称__CLASS__
: 当前类的名称__METHOD__
: 当前方法的名称例如:
echo __FILE__; // 输出当前脚本的文件名
echo __LINE__; // 输出当前脚本中的行号
常量非常适合存储配置信息,例如数据库连接信息、API密钥等。通过将这些敏感信息存储为常量,可以确保它们在整个脚本中不会被更改。
define("DB_HOST", "localhost");
define("DB_USERNAME", "myuser");
define("DB_PASSWORD", "mypassword");
常量可以用于定义枚举值,即一组相关的命名常量。您可以使用这些常量来表示不同的颜色。例如,假设您想定义一些颜色常量:
define("COLOR_RED", "red");
define("COLOR_GREEN", "green");
define("COLOR_BLUE", "blue");
PHP提供了一些内置的数学常量,方便在数学运算中使用,具体可以查阅PHP手册。例如:
echo M_PI; // 输出圆周率π的值
echo M_E; // 输出自然对数的底数e的值
常量还可以用于条件编译。根据不同的条件,您可以定义不同的常量值。然后,您可以根据这些常量的值来执行不同的代码块。例如:
define("DEBUG_MODE", true);
if (DEBUG_MODE) {
// 执行调试模式下的代码
} else {
// 执行非调试模式下的代码
}
运算符 | 说明 |
---|---|
$a+$b |
加法$a 和$b 的和 |
$a-$b |
减法 $a 和$b 的差 |
$a*$b |
乘法 $a 和$b 的积 |
$a/$b |
除法 $a 除以$b 的商 |
$a%$b |
取模 $a 除以$b 后的余 |
++$a |
前加 $a 的值先加一,然后进行操作 |
$a++ |
后加 $a 的值先进行操作,后加一 |
--$a |
前减 $a 的值先减一,然后进行操作 |
$a-- |
后减 $a 的值先进行操作,后减一 |
$a = 5;
$b = 3;
$result = $a + $b; // $result 的值为 8
$a = 5;
$b = 3;
$result = $a - $b; // $result 的值为 2
$a = 5;
$b = 3;
$result = $a * $b; // $result 的值为 15
$a = 10;
$b = 2;
$result = $a / $b; // $result 的值为 5
$a = 10;
$b = 3;
$result = $a % $b; // $result 的值为 1
$a = 2;
$b = 3;
$result = $a ** $b; // $result 的值为 8
$a = 5;
echo ++$a; // 输出:6
echo $a; // 输出:6
$a = 5;
echo $a++; // 输出:5
echo $a; // 输出:6
$a = 5;
echo $a--; // 输出:5
echo $a; // 输出:4
$a = 5;
echo --$a; // 输出:4
echo $a; // 输出:4
运算符 | 说明 |
---|---|
= | 右边值赋值给左边变量 |
+= | 左边值加上右边值赋值给左边变量 |
-= | 左边值减掉右边值赋值给左边变量 |
*= | 左边值乘以右边值赋值给左边变量 |
/= | 左边值除以右边值赋值给左边变量 |
.= | 左边字符串连接到右边变量后面 |
%= | 左边值对右边值取余数后赋值给左边变量 |
运算符 | 说明 |
---|---|
. | 它返回其左右参数连接后的字符串 |
.= | 左边字符串连接到右边变量后面 |
运算符 | 说明 |
---|---|
$a==$b |
等于 TRUE,如果 a 等于 a 等于 a等于b |
$a===$b |
全等于 TRUE,如果 a 等于 a 等于 a等于b,并且类型也相同 |
$a!=$b |
不等 TRUE,如果 a 不等于 a 不等于 a不等于b |
$a<>$b |
不等 TRUE,如果 a 不等于 a 不等于 a不等于b |
$a!==$b |
非全等 TRUE,如果 a 不等于 a 不等于 a不等于b,或者类型不同 |
$a<$b |
小于 TRUE,如果 a 严格小于 a 严格小于 a严格小于b |
$a>$b |
大于 TRUE,如果 a 严格 a 严格 a严格b |
$a<=$b |
小于等于 TRUE,如果 a 小于或者等于 a 小于或者等于 a小于或者等于b |
$a>=$b |
大于等于 TRUE,如果 a 大于或者等于 a 大于或者等于 a大于或者等于b |
运算符 | 说明 |
---|---|
$a and $b |
逻辑与 TRUE,如果 $a 与 $b 都为 TRUE |
$a or $b |
逻辑或 TRUE,如果 $a 或 $b 任一为 TRUE |
!$a |
逻辑非 TRUE,如果 $a 不为 TRUE |
$a && $b |
逻辑与 TRUE,如果 $a 与 $b 都为 TRUE |
`$a |
变量 = 条件 ? 值1 : 值2;
当表达式的条件 true 时, 变量 = 值 1 否则 变量 = 值 2
变量?? "默认值";
??
操作符是空合并运算符,它用于简化对变量是否为null的判断,并在变量为null时提供一个默认值。 注意是:null
$s1 = null;
echo $s1?? "888"; //结果:888
$s2 = 0;
echo $s2?? 888; // 结果为:0
$s3 = flase;
echo $s3?? 888; // 结果为:不显示
$s4 = true;
echo $s4?? 888; // 结果为:1
用于执行条件分支的控制结构。它们可以根据条件的真假执行不同的代码块
if (条件1) {
// 当条件1为真时执行的代码块
} elseif (条件2) {
// 当条件1为假而条件2为真时执行的代码块
} else {
// 当所有条件都为假时执行的代码块
}
$age = 25;
if ($age < 18) {
echo "未成年人";
} elseif ($age >= 18 && $age < 65) {
echo "成年人";
} else {
echo "老年人";
}
switch
用于执行多个条件分支的控制结构。根据表达式的值选择不同的代码块进行执行
switch (表达式) {
case 值1:
// 当表达式的值等于值1时执行的代码块
break;
case 值2:
// 当表达式的值等于值2时执行的代码块
break;
// 可以有多个case块
default:
// 当表达式的值与所有case的值都不匹配时执行的代码块
break;
}
$day = "Monday";
switch ($day) {
case "Monday":
echo "星期一";
break;
case "Tuesday":
echo "星期二";
break;
case "Wednesday":
echo "星期三";
break;
case "Thursday":
echo "星期四";
break;
case "Friday":
echo "星期五";
break;
default:
echo "周末";
break;
}
注意:如果在 switch
语句的 case
块中没有使用 break
语句,程序将会继续执行后续的 case
块,而不会跳出 switch
语句。
$day = "Monday";
switch ($day) {
case "Monday":
echo "Today is Monday.";
case "Tuesday":
echo "Tomorrow is Tuesday.";
case "Wednesday":
echo "The day after tomorrow is Wednesday.";
default:
echo "Other days.";
}
/**
结果为: Today is Monday.
Tomorrow is Tuesday.
The day after tomorrow is Wednesday.
Other days.
*/
while
是一种常用的循环控制结构,用于在满足条件的情况下重复执行一段代码块。
while (条件) {
// 循环体中的代码
}
$count = 1;
while ($count <= 5) {
echo $count . " ";
$count++;
}
do while
是一种循环控制结构,类似于 while
循环,但它会先执行一次循环体中的代码,然后再检查条件是否为真,如果条件为真,则继续执行循环。
do {
// 循环体中的代码
} while (条件);
$count = 1;
do {
echo $count . " ";
$count++;
} while ($count <= 5);
for
是一种常用的循环控制结构,用于在指定的条件下重复执行一段代码块,并控制循环变量的增量。
for (初始表达式; 条件表达式; 增量表达式) {
// 循环体中的代码
}
for ($i = 1; $i <= 5; $i++) {
echo $i . " ";
}
注意: 循环的时候必须设置停止循环的条件,不然呵呵~ 死机了吧!
和
continuebreak
语句用于立即终止当前循环(例如 for
、while
、do while
循环),并跳出循环体,继续执行循环后的代码。它可以用于提前结束循环,无论是否满足循环条件。当程序执行到 break
语句时,循环会立即结束,不再执行循环体内剩余的代码。
continue
语句用于跳过当前循环的剩余代码,立即进入下一次循环迭代。当程序执行到 continue
语句时,循环会跳过当前迭代的剩余代码,直接进入下一次迭代。它可以用于跳过某些特定条件下的迭代操作。
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
break;
}
echo $i . " ";
}
for ($i = 1; $i <= 5; $i++) {
if ($i == 3) {
continue;
}
echo $i . " ";
}
PHP.ini 配置 date.timezone = PRC` (不推荐)
脚本中修改 (推荐使用)
date_default_timezone_get() //取得当前使用时区
date_default_timezone_set() //设定当前使用时区
PHP提供了一个内置的DateTime类和一些相关的函数,用于处理日期和时间的创建、格式化、计算等操作。
//获取当前日期和时间:
$timeNow = new DateTime(); // 当前日期和时间
$dateNow = $timeNow->format('Y-m-d'); // 当前日期
$timeNow = $timeNow->format('H:i:s'); // 当前时间
//格式化日期和时间:
$dateTime = new DateTime('2021-12-01 14:30:00');
$formattedDateTime = $dateTime->format('Y-m-d H:i:s'); // 格式化为字符串
//解析日期和时间:
$dateString = '2021-12-01 14:30:00';
$dateTime = DateTime::createFromFormat('Y-m-d H:i:s', $dateString); // 解析字符串为日期对象
//计算日期和时间:
$dateTime = new DateTime('2021-12-01');
$dateTime->modify('+1 day'); // 添加一天
$newDate = $dateTime->format('Y-m-d'); // 修改后的日期
//比较日期和时间
$dateTime1 = new DateTime('2021-12-01');
$dateTime2 = new DateTime('2022-01-01');
if ($dateTime1 < $dateTime2) {
// 日期1早于日期2
}
//格式化输出相对时间:
$dateTime = new DateTime('2021-12-01');
$now = new DateTime();
$diff = $dateTime->diff($now); // 计算日期差
$relativeTime = $diff->format('%y years, %m months, %d days'); // 格式化为相对时间
include
、require
、include_once
和require_once
是用于在脚本中包含其他文件的语句。它们的功能类似,但在文件包含的方式和错误处理方面有一些不同。
include`:用于包含指定文件,并在包含过程中产生一个警告(非致命错误),如果包含的文件不存在或发生其他错误,脚本会继续执行。
include 'file.php';
require
:用于包含指定文件,并在包含过程中产生一个致命错误,如果包含的文件不存在或发生其他错误,脚本会停止执行。
require 'file.php';
include_once
:与include
类似,但是如果同一个文件已经被包含过,include_once
会检查并确保文件不会被重复包含。这避免了重复定义函数、类或变量等问题。
include_once 'file.php';
require_once
:与require
类似,但是如果同一个文件已经被包含过,require_once
会检查并确保文件不会被重复包含。这避免了重复定义函数、类或变量等问题。
require_once 'file.php';
使用include
和require
语句时,可以包含任何PHP文件,包括库文件、模块文件等。被包含的文件可以是相对于当前脚本文件的路径或绝对路径。
需要注意以下几点:
include
和require
语句在包含文件时,会创建一个新的局部作用域,包含的文件中定义的函数、类和变量在包含语句后可用。include
会产生一个警告并继续执行,require
会产生一个致命错误并停止执行。include_once
和require_once
语句在包含文件时,会检查文件是否已经被包含过,避免重复包含相同文件。require
或require_once
,因为如果被包含文件是必需的(例如核心库文件),则应该确保它们存在,以避免脚本出现严重错误。