PHP知识点大全(二)

简介: 教程来源 http://unbgv.cn/category/shengxiaoxingge.html 本文系统讲解PHP核心语法:涵盖算术、赋值、比较、逻辑等运算符;if/switch/match条件控制与while/for/foreach循环;函数定义、类型声明、可变参数、匿名函数(含箭头函数)、递归等完整函数特性。内容全面,示例丰富,适合作为PHP学习速查手册。

三、运算符

3.1 算术运算符

<?php
$a = 10;
$b = 3;

echo $a + $b;   // 13(加法)
echo $a - $b;   // 7(减法)
echo $a * $b;   // 30(乘法)
echo $a / $b;   // 3.333...(除法)
echo $a % $b;   // 1(取模/取余)
echo $a ** $b;  // 1000(幂运算,PHP 5.6+)

// 取模运算注意事项
echo -10 % 3;   // -1(结果与被除数符号相同)
echo 10 % -3;   // 1

3.2 赋值运算符

<?php
$x = 10;
$x += 5;    // $x = $x + 5 = 15
$x -= 3;    // $x = $x - 3 = 12
$x *= 2;    // $x = $x * 2 = 24
$x /= 4;    // $x = $x / 4 = 6
$x %= 2;    // $x = $x % 2 = 0
$x .= "abc"; // $x = $x . "abc" = "0abc"

// 引用赋值
$a = 10;
$b = &$a;   // $b是$a的引用
$a = 20;
echo $b;    // 20

3.3 比较运算符

<?php
$a = 5;
$b = "5";
$c = 10;

var_dump($a == $b);   // true(值相等)
var_dump($a === $b);  // false(值相等但类型不同)
var_dump($a != $b);   // false
var_dump($a !== $b);  // true
var_dump($a <> $b);   // false(不等于,同!=)
var_dump($a < $c);    // true
var_dump($a > $c);    // false
var_dump($a <= $c);   // true
var_dump($a >= $c);   // false

// 太空船运算符(PHP 7+)
echo 1 <=> 1;   // 0(相等)
echo 1 <=> 2;   // -1(左边小于右边)
echo 2 <=> 1;   // 1(左边大于右边)

// null合并运算符(PHP 7+)
$username = $_GET['user'] ?? '匿名';  // 如果$_GET['user']存在且不为null,使用它,否则使用'匿名'

// 组合比较
$result = $a <=> $b;

3.4 逻辑运算符

<?php
$a = true;
$b = false;

var_dump($a and $b);  // false(逻辑与)
var_dump($a && $b);   // false(逻辑与,优先级更高)
var_dump($a or $b);   // true(逻辑或)
var_dump($a || $b);   // true(逻辑或,优先级更高)
var_dump(!$a);        // false(逻辑非)
var_dump($a xor $b);  // true(逻辑异或,一真一假为真)

// 短路求值
function test() {
    echo "执行了";
    return true;
}
$result = false && test();  // test()不会执行(短路)

3.5 字符串运算符

<?php
$a = "Hello";
$b = " World";

// 连接运算符
$c = $a . $b;      // "Hello World"

// 连接赋值运算符
$a .= $b;          // $a = "Hello World"

// 字符串插值(双引号内)
$name = "张三";
echo "你好,$name";   // 输出:你好,张三

// 复杂语法
echo "你好,{$name}先生";  // 输出:你好,张三先生

3.6 数组运算符

<?php
$a = ["a" => "苹果", "b" => "香蕉"];
$b = ["c" => "橙子", "d" => "葡萄"];
$c = ["b" => "菠萝", "a" => "苹果"];

// +:联合,左边优先
$result = $a + $b;   // ["a"=>"苹果", "b"=>"香蕉", "c"=>"橙子", "d"=>"葡萄"]

// ==:相等(键值对相同)
var_dump($a == $c);   // true

// ===:全等(键值对相同且顺序相同)
var_dump($a === $c);  // false(顺序不同)

// !=:不等
// <>:不等
// !==:不全等

3.7 其他运算符

<?php
// 三元运算符
$age = 18;
$status = $age >= 18 ? "成年" : "未成年";

// 三元运算符简写(PHP 5.3+)
$username = $_GET['user'] ?: "匿名";  // 等同于 $username = $_GET['user'] ? $_GET['user'] : "匿名"

// NULL合并运算符(PHP 7+)
$username = $_GET['user'] ?? "匿名";   // 如果$_GET['user']存在且不为null,使用它,否则使用"匿名"

// 错误控制运算符(@)
$result = @file_get_contents("notexist.txt");  // 抑制错误信息

// 执行运算符(反引号)
$output = `ls -la`;
echo $output;

// instanceof:类型检测
class MyClass {}
$obj = new MyClass();
var_dump($obj instanceof MyClass);  // true

四、流程控制

4.1 条件语句

<?php
// if语句
$score = 85;
if ($score >= 60) {
    echo "及格了!";
}

// if-else语句
if ($score >= 60) {
    echo "及格";
} else {
    echo "不及格";
}

// if-elseif-else语句
if ($score >= 90) {
    echo "优秀";
} elseif ($score >= 80) {
    echo "良好";
} elseif ($score >= 70) {
    echo "中等";
} elseif ($score >= 60) {
    echo "及格";
} else {
    echo "不及格";
}

// 替代语法(适用于模板)
if ($score >= 60):
    echo "及格了!";
endif;

// switch语句
$day = date('N');  // 1(星期一)到7(星期日)
switch ($day) {
    case 1:
        echo "星期一";
        break;
    case 2:
        echo "星期二";
        break;
    case 3:
        echo "星期三";
        break;
    case 4:
        echo "星期四";
        break;
    case 5:
        echo "星期五";
        break;
    default:
        echo "周末";
}

// switch替代语法
switch ($day):
    case 1:
        echo "星期一";
        break;
    default:
        echo "周末";
endswitch;

// match表达式(PHP 8.0+)
$result = match($day) {
    1 => "星期一",
    2 => "星期二",
    3 => "星期三",
    4 => "星期四",
    5 => "星期五",
    default => "周末",
};
echo $result;

4.2 循环语句

<?php
// while循环
$i = 1;
while ($i <= 5) {
    echo "第{$i}次<br>";
    $i++;
}

// do-while循环(至少执行一次)
$j = 1;
do {
    echo "第{$j}次<br>";
    $j++;
} while ($j <= 5);

// for循环
for ($i = 1; $i <= 5; $i++) {
    echo "第{$i}次<br>";
}

// 嵌套循环:乘法表
echo "<table border='1'>";
for ($i = 1; $i <= 9; $i++) {
    echo "<tr>";
    for ($j = 1; $j <= $i; $j++) {
        echo "<td>{$i}×{$j}=" . ($i * $j) . "</td>";
    }
    echo "</tr>";
}
echo "</table>";

// foreach循环(遍历数组)
$fruits = ["苹果", "香蕉", "橙子"];
foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}

// 遍历关联数组
$user = ["name" => "张三", "age" => 25, "city" => "北京"];
foreach ($user as $key => $value) {
    echo "{$key}: {$value}<br>";
}

// 通过引用修改数组元素
$numbers = [1, 2, 3];
foreach ($numbers as &$num) {
    $num *= 2;
}
// $numbers = [2, 4, 6]

// break和continue
for ($i = 1; $i <= 10; $i++) {
    if ($i == 5) {
        break;    // 跳出循环
    }
    if ($i % 2 == 0) {
        continue; // 跳过本次迭代
    }
    echo $i . "<br>";
}

五、函数

5.1 函数定义与调用

<?php
// 基本函数定义
function sayHello() {
    echo "Hello, World!";
}
sayHello();  // 调用

// 带参数的函数
function greet($name) {
    echo "Hello, {$name}!";
}
greet("张三");

// 带返回值的函数
function add($a, $b) {
    return $a + $b;
}
$result = add(10, 20);

// 默认参数
function makeCoffee($type = "拿铁") {
    echo "制作一杯{$type}";
}
makeCoffee();        // 制作一杯拿铁
makeCoffee("美式");   // 制作一杯美式

// 类型声明(PHP 7+)
function sum(int $a, int $b): int {
    return $a + $b;
}

// 严格类型模式
declare(strict_types=1);
function multiply(int $a, int $b): int {
    return $a * $b;
}
// multiply(2.5, 3); // 错误:类型不匹配

// 可变参数(PHP 5.6+)
function sumAll(...$numbers) {
    return array_sum($numbers);
}
echo sumAll(1, 2, 3, 4, 5);  // 15

// 参数解包(PHP 5.6+)
$numbers = [1, 2, 3, 4, 5];
echo sumAll(...$numbers);  // 15

// 返回值类型声明
function getValue(): ?string {
    return null;  // 可以返回null或string
}

// void返回类型(PHP 7.1+)
function logMessage(string $msg): void {
    echo $msg;
    // 不能有return语句
}

// 函数内静态变量
function counter() {
    static $count = 0;
    $count++;
    return $count;
}
echo counter();  // 1
echo counter();  // 2
echo counter();  // 3

5.2 可变函数

<?php
function foo() {
    echo "foo函数";
}
function bar($arg) {
    echo "bar函数:{$arg}";
}

$func = "foo";
$func();      // 调用foo()

$func = "bar";
$func("test"); // 调用bar("test")

// 对象方法调用
class MyClass {
    public function method() {
        echo "方法被调用";
    }
}
$obj = new MyClass();
$methodName = "method";
$obj->$methodName();

5.3 匿名函数(闭包)

<?php
// 匿名函数赋值给变量
$greet = function($name) {
    echo "Hello, {$name}!";
};
$greet("张三");

// 作为参数传递
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(function($n) {
    return $n * $n;
}, $numbers);

// 使用use关键字引入外部变量
$factor = 2;
$multiply = function($n) use ($factor) {
    return $n * $factor;
};
echo $multiply(5);  // 10

// 返回匿名函数
function multiplier($factor) {
    return function($n) use ($factor) {
        return $n * $factor;
    };
}
$double = multiplier(2);
echo $double(5);  // 10

// 箭头函数(PHP 7.4+)
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(fn($n) => $n * $n, $numbers);
$factor = 2;
$multiply = fn($n) => $n * $factor;  // 自动捕获外部变量

5.4 递归函数

<?php
// 阶乘
function factorial($n) {
    if ($n <= 1) {
        return 1;
    }
    return $n * factorial($n - 1);
}
echo factorial(5);  // 120

// 斐波那契数列
function fibonacci($n) {
    if ($n <= 1) {
        return $n;
    }
    return fibonacci($n - 1) + fibonacci($n - 2);
}

// 遍历目录
function listFiles($dir) {
    $files = scandir($dir);
    foreach ($files as $file) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        $path = $dir . DIRECTORY_SEPARATOR . $file;
        if (is_dir($path)) {
            echo "目录: {$path}\n";
            listFiles($path);
        } else {
            echo "文件: {$path}\n";
        }
    }
}
listFiles(__DIR__);

来源:
http://unbgv.cn/category/shengxiaopeidui.html

相关文章
|
2月前
|
安全 PHP 索引
PHP知识点大全(三)
教程来源 http://unbgv.cn/category/shengxiaoshiye.html 本节详解PHP核心数据结构与字符串处理:数组作为有序映射,支持索引、关联及混合形式,涵盖创建、增删改查、遍历、指针操作及常用函数(合并、排序、过滤等);字符串部分介绍单双引号差异、编码处理、查找替换、正则匹配及HTML安全操作;文件目录操作包括读写、锁定、路径管理与递归遍历。
|
2月前
|
人工智能 API 网络安全
新手零基础|阿里云计算巢部署OpenClaw+WhatsApp集成+千问Qwen3.6-Plus保姆级全攻略
2026年,开源AI智能体框架OpenClaw(曾用名Clawdbot,因形象被称为“小龙虾”)凭借“本地优先、主动执行、多渠道接入”的核心特性,成为个人与中小企业搭建专属AI助手的首选方案。它不局限于传统对话交互,而是能通过自然语言理解完成任务规划、工具调用、自动化执行,覆盖办公提效、客户服务、内容创作等全场景。
583 2
|
2月前
|
数据采集 监控 API
1688按图搜款神器!Open Claw 拍立淘API,图片一键找同款货源(附Python源码)
电商人找1688同款货源太难?关键词不准、翻页耗时、比价繁琐、爆款跟不上!Open Claw 1688按图搜索API(拍立淘)一键解决:上传图片,秒出同款列表,支持销量/价格排序、一件代发筛选、自动返回价格销量等关键数据,效率提升100倍,新手5分钟上手!
|
5月前
|
自然语言处理 监控 数据可视化
你的大模型微调真的有效吗?90%的人都不知道的评估秘诀
本文系统探讨大模型微调效果的量化评估方法,涵盖损失函数监控、困惑度分析、任务专属指标(如BLEU/F1/ROUGE)、人工评估与A/B测试、消融实验及横向对比,强调多维协同、闭环反馈,助力科学优化微调效果。
|
2月前
|
开发工具 C++ git
Visual Studio Code 2025 代码编辑器安装教程:详细步骤+自定义路径+中文汉化(64位)
VS Code是轻量强大的开源代码编辑器,支持调试、语法高亮、Git集成、智能补全等。本文详解2025版64位安装流程(含解压、管理员运行、路径设置、快捷方式创建)及官方简体中文汉化步骤,助你快速上手开发。
|
1月前
|
XML 前端开发 程序员
初级程序员必备的十大技能之 API 接口与前后端联调(一)
教程来源 http://qeext.cn/ 本文系统讲解API设计规范(RESTful/GraphQL)、HTTP协议核心(方法、状态码、头信息)、前后端联调流程及调试工具,助你打造标准化、高可用接口,打破前后端协作孤岛。
|
2月前
|
移动开发 自然语言处理 小程序
前端组件库——Wot Design Uni知识点大全(三)
教程来源 https://rvtst.cn Wot Design Uni 是基于 Vue3 的跨平台 UI 组件库,支持微信/支付宝小程序、H5、App 等多端兼容;提供样式隔离修复、virtualHost 渲染优化、虚拟列表、按需引入、国际化(15+语言)等完整解决方案。
|
2月前
|
数据采集 前端开发 数据可视化
前端组件库——TDesign知识点大全(二)
教程来源 http://xcfsr.cn TDesign提供完善的主题定制能力:基于Design Token实现设计原子化管理;支持明暗双模式一键切换;内置主题生成器,可自定义颜色、字体等;兼容Vite/webpack的Less变量定制。同时拥有覆盖布局、导航、消息、数据、输入等场景的丰富组件体系。
|
2月前
|
移动开发 前端开发 JavaScript
前端组件库——Wot Design Uni知识点大全(二)
教程来源 http://unbgv.cn Wot Design Uni 是基于 Vue3+TS 的跨平台 uni-app 组件库,提供 70+ 高质量组件。涵盖按钮、单元格、表单(支持链式校验)、弹窗、Toast、虚拟列表及带徽标的 Tabs 等,全面适配小程序/H5/APP,支持暗黑模式与国际化。
|
3月前
|
人工智能 机器人 API
小龙虾OpenClaw怎么部署?阿里云轻量服务器部署OpenClaw接入飞书保姆级教程
2026年,OpenClaw(原Clawdbot、Moltbot,社区昵称“小龙虾”)凭借本地优先、多通道接入、插件化扩展的特性,成为企业与个人搭建AI自动化助理的首选工具。对于零基础用户而言,**阿里云轻量应用服务器**是部署OpenClaw的最优选择——预置官方应用镜像、无需手动配置复杂环境、成本低且稳定性强,搭配飞书接入后,可实现单聊/群聊指令交互、任务自动执行、消息智能处理等能力。
629 9

热门文章

最新文章