PHP学习笔记
php语法
<?php
//php代码
?>
php文件通常包含HTML标签和一些PHP脚本代码
注释
<!DOCTYPE html>
<html>
<body>
<?php
//单行注释
/*
多行注释
*/
?>
</body>
</html>
php变量
<!DOCTYPE html>
<html>
<body>
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
</body>
</html>
php变量规则
- 变量以$符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量只能包含字母、数字以及下划线
- 变量名不能包含空格
- 变量名是区分大小写的
php是一门弱比较型语言,不用声明变量类型的命令
<?php
$txt="scs";
$x=1;
?>
变量作用域
PHP有四种不同的变量作用域
- local
- global
- static
- parameter(参数)
在PHP函数内部声明的变量是局部变量,仅能在函数内部访问;
在所有函数外部定义的变量,是全局变量,变量在可以在函数外脚本中的任何地方访问,在函数内访问需要用global 关键字。注:在函数内如不用glabla关键字不能访问全局变量
<?php
$x=5;
$y=10;
$z=4;
function myTest()
{
global $x,$y;
$y=$x+$y;
echo $z //无输出
}
myTest();
echo $y; // 输出 15
?>
PHP将所有全局变量存储在一个名为$GLOBALS[index]的数组中,index为变量名称,可以访问更新
<?php
$x=5;
$y=10;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; //15
?>
static可以让函数运行后局部变量不被删除
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
myTest(); //0
myTest(); //1
myTest(); //2
?>
echo和print语句
echo和print是PHP中两个基本的输出
echo和print的区别
- echo:可以输出一个或多个字符串,没有返回值,输出速度更快
- print:只允许输出一个字符串,返回值总为1
echo和print都可以用括号,也可以不用echo(),print(),字符串可以包含HTML标签
<?php
echo "<h2>PHP 很有趣!</h2>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";//除此句,print格式一样
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>
PHP EOF
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
使用概述
:
- EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
- 结束标识必须后接分号,且顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符
.
或,
来拼接
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- . 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
$name="runoob";
$a= <<<EOF
"abc"$name
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
数据类型
- String(字符串)
- Integer(整型)//十进制,十六进制( 以 0x 为前缀或八进(前缀为 0)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
- Resource(资源类型)
var_dump() 函数返回变量的数据类型和值
数组
<?php
$cars=array("Volvo","BMW","Toyota");
var_dump($cars); //返回变量的数据类型和值
?>
/*
array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }
*/
对象
对象数据类型也可以用于存储数据。
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
<!DOCTYPE html>
<html>
<body>
<?php
class Car
{
var $color;
function __construct($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars($obj) {
foreach (get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
// 实例一个对象
$herbie = new Car("white");
// 显示 herbie 属性
echo "\therbie: Properties\n";
print_vars($herbie);
?>
</body>
</html>
//运行结果:herbie: Properties color = white
资源类型
PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。常见资源数据类型有打开文件、数据库连接、图形画布区域等。
使用 get_resource_type() 函数可以返回资源(resource)类型:
<?php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印:mysql link
$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印:file
$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>
PHP常量
PHP 中的常量是指一旦定义后其值不能被改变的标识符。常量可以用 define() 函数或 const 关键字来定义。
特点
- 不变性: 常量一旦定义,其值不能改变。
- 全局作用域: 常量在定义后,可以在整个脚本的任何地方使用,无需使用 global 关键字。
- 数据类型: 常量的值可以是标量数据类型(如布尔值、整数、浮点数、字符串)或数组(PHP 7 及以上版本)。
- 区分大小写: 常量名称默认是区分大小写的。如果需要定义大小写不敏感的常量,可以在 define() 函数的第三个参数设置为 true。
define
define()函数语法
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
不区分大小写的常量
<?php
// 不区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com", true);
echo greeting; // 输出 "欢迎访问 Runoob.com"
?>
const
const函数语法
const CONSTANT_NAME = "value";
示例
const SITE_URL = "https://www.runoob.com";
echo SITE_URL; // 输出 "https://www.runoob.com"
预定义常量
PHP 提供了一些预定义常量,可以在脚本中直接使用。这些常量通常用于获取 PHP 的配置信息、版本信息等。常见的预定义常量有:
- PHP_VERSION:当前 PHP 解析器的版本。
- PHP_OS:服务器的操作系统。
- PHP_INT_MAX:最大的整数值。
- E_ERROR、E_WARNING、E_PARSE 等:错误报告级别。
常量数组
常量也可以是数组
define("FRUITS", [
"Apple",
"Banana",
"Orange"
]);
echo FRUITS[0]; // 输出 "Apple"
运算符
运算符 | 名称 | 描述 | 示例 | 结果 |
---|---|---|---|---|
a.b | 并置 | 连接两个字符串 | “Hi”.“Ha” | HiHa |
x==y | 等于 | 值相等则返回true | 5==“5” | true |
x===y | 绝对等于 | 值和类型都相等返回true | 5===“5” | flase |
x<>y | 不等于 | 不等于返回true | 5<>8 | true |
x!==y | 不绝对等于 | 值或类型不相同返回true | 5!==“5” | true |
逻辑运算符
与: 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 |
三元运算符
? :
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2;
在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
isset()函数检查变量是否设置
<?php
// 普通写法
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
echo $username, PHP_EOL;
// PHP 5.3+ 版本写法
$username = $_GET['user'] ?: 'nobody';
echo $username, PHP_EOL;
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
?>
组合比较符
PHP7+ 支持组合比较符,也称之为太空船操作符,符号为 <=>。
$c = $a <=> $b;
- 如果 $a > $b, 则 $c 的值为 1。
- 如果 $a == $b, 则 $c 的值为 0。
- 如果 $a < $b, 则 $c 的值为 -1。