avatar

cindahy

A text-focused Halo theme

  • 首页
  • 文章分类
  • 项目
  • 关于
Home PHP学习笔记①
文章

PHP学习笔记①

Posted 2024-07-10 Updated 2025-08- 19
By Administrator
34~44 min read

PHP学习笔记

  • php语法

  • php变量

    • 变量作用域

  • echo和print语句

  • PHP EOF

  • 数据类型

    • 数组

    • 对象

    • 资源类型

  • PHP常量

    • define

    • const

    • 预定义常量

    • 常量数组

  • 运算符

    • 逻辑运算符

    • 数组运算符

    • 三元运算符

    • 组合比较符

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。

php
php
License:  CC BY 4.0
Share

Further Reading

Jul 17, 2024

PHP学习笔记③

PHP学习笔记③ 命名空间 定义命名空间

Jul 14, 2024

PHP学习笔记②

PHP学习笔记② 条件语句 循环语句

Jul 10, 2024

PHP学习笔记①

PHP学习笔记 php语法 php变量

OLDER

《白帽子》点击劫持笔记

NEWER

PHP学习笔记②

Recently Updated

  • 常见安全产品整理(防火墙,WAF,EDR)
  • ELK从入门到实践
  • bp+mumu模拟器app抓包
  • xray漏扫工具
  • Java反序列化-RMI的几种攻击方式

Trending Tags

安全运营 文件上传 php反序列化 xss csrf ssrf xxe sql php 白帽子讲web安全

Contents

©2025 cindahy. Some rights reserved.

Using the Halo theme Chirpy