当前位置: 首页 > news >正文

PHP语法学习(第七天)-循环语句,魔术常量

老套路了,朋友们,先回忆昨天讲的内容PHP语法学习(第六天)主要讲了PHP中的if…else语句、关联数组以及数组排序。
想要学习更多PHP语法相关内容点击“PHP专栏!”
下列代码都是在PHP在线测试运行环境中得到的!!
还记得电击小子吗?——小光:“只要你不放弃自己,一定能成功!”

在这里插入图片描述

文章目录

  • PHP 循环语句
    • while 循环
      • 实例
    • do...while 语句
      • 实例
    • for 循环
      • 实例
    • foreach 循环
      • 实例:
  • PHP 魔术常量
    • `__LINE__` :文件中的当前行号
    • `__FILE__`:文件的完整路径和文件名
      • 实例:
    • `__DIR__`:文件所在的目录
      • 实例
    • `__FUNCTION__`:函数名称
      • 实例
    • `__CLASS__`:类的名称
      • 实例
    • `__TRAIT__`:Trait 的名字
      • 实例:
    • `__METHOD__`:类的方法名
      • 实例:
    • `__NAMESPACE__`:当前命名空间的名称
      • 实例:

PHP 循环语句

在 PHP 中,有下列循环语句:

  • while - 只要指定的条件成立,则循环执行代码块
  • do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
  • for - 循环执行代码块指定的次数
  • foreach - 根据数组中每个元素来循环代码块

while 循环

  • 只要指定的条件成立,则循环执行代码块

语法:

while (条件)
{要执行的代码;
}

实例

<html>
<body><?php
$i=1;
while($i<=5)
{ echo "电击小子 is NO" . $i . "<br>";$i++;
}
?></body>
</html>

运行结果:

电击小子 is NO1
电击小子 is NO2
电击小子 is NO3
电击小子 is NO4
电击小子 is NO5

do…while 语句

  • 首先执行一次代码块,然后在指定的条件成立时重复这个循环

语法:

do
{要执行的代码;
}
while (条件);

实例

<html>
<body>
<?php
$i=1;
do
{$i++; #先执行i=i+1echo "电击小子 is NO" . $i . "<br>";
}
while ($i<=5);
?>
</body>
</html>

运行结果:

电击小子 is NO2
电击小子 is NO3
电击小子 is NO4
电击小子 is NO5
电击小子 is NO6

for 循环

  • 循环执行代码块指定的次数

语法:

for (初始值; 条件; 增量)
{要执行的代码;
}

实例

<?php
for ($i=1; $i<=5; $i++)
{echo "电击小子 is NO" . $i . "<br>";
}
?>

运行结果

电击小子 is NO1
电击小子 is NO2
电击小子 is NO3
电击小子 is NO4
电击小子 is NO5

foreach 循环

  • foreach 循环用于遍历数组
  • 根据数组中每个元素来循环代码块

语法:
先讲讲原理:每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,你会看到数组中的下一个值。

foreach ($array  as  $value)
{要执行代码;
}

实例:

<?php
$car =array("SU7 Ultra","BMW","RB17");
foreach ($car as $value)
{echo "我的梦想 ".$value . "<br>";
}
?>

运行结果:

我的梦想 SU7 Ultra
我的梦想 BMW
我的梦想 RB17

PHP 魔术常量

  • 所谓的“魔术变量”实际上是指一组特殊的预定义常量
  • 这些“魔术变量”在调试、日志记录、自动路径处理等场景中都非常有用
  • PHP当中有八个魔术常量,这些常量的值会随着它们在代码中的位置改变而改变

__LINE__ :文件中的当前行号

实例:

<?php
echo '这是第 " '  . __LINE__ . ' " 行';
?>

运行结果:

这是第 " 2 " 行

__FILE__:文件的完整路径和文件名

  • 若用在被包含文件中,则返回被包含的文件名
  • 从 PHP 4.0.2版本 开始,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径

实例:

<?php
echo '该文件位于 " '  . __FILE__ . ' " ';
?>

运行结果:

该文件位于 " /box/script.php "

这里的文件名是在PHP在线测试网站运行得到的(个人建议一边学一边玩代码)

__DIR__:文件所在的目录

  • 若用在被包括文件中,则返回被包括的文件所在的目录
  • 该常量等价于 dirname(__FILE__),在PHP 5.3.0版本中新增了,只有根目录中,包括末尾的斜杠

实例

<?php
echo '该文件位于 " '  . __DIR__ . ' " ';
?>

运行结果:

该文件位于 " /box "

__FUNCTION__:函数名称

  • PHP 5 起本常量返回该函数被定义时的名字(区分大小写)
  • PHP 4 中该值总是小写字母的

实例

<?php
function lxj() {echo  '函数名为:' . __FUNCTION__ ;
}
lxj( );
?>

运行结果:

函数名为:lxj

__CLASS__:类的名称

  • PHP 5 起本常量返回该类被定义时的名字(区分大小写)
  • PHP 5.4 起, __CLASS__trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字

实例

<?php
class lxj {function _print() {echo '类名为:'  . __CLASS__ . "<br>";echo  " 函数名为:" . __FUNCTION__ ;}
}
$t = new lxj();
$t->_print();
?>

运行结果:

类名为:lxj
函数名为:_print

__TRAIT__:Trait 的名字

  • PHP 5.4.0版本起 ,PHP 实现了代码复用的一个方法,称为 traits
  • Trait 名包括其被声明的作用区域(例如 Foo\Bar)。从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。与 MyHelloWorld 类中定义的方法一致。
  • 优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

实例:

<?php
class Base {public function sayHello() {echo 'Hello ';}
}trait SayWorld {public function sayHello() {parent::sayHello();echo 'LXJ!';}
}
class MyHelloWorld extends Base {use SayWorld;
}$o = new MyHelloWorld();
$o->sayHello();
?>

运行结果:

Hello LXJ!

__METHOD__:类的方法名

-返回该方法被定义时的名字(区分大小写),该常量是在PHP 5.0.0 新加的

实例:

<?php
function lxj() {echo  '函数名为:' . __METHOD__ ;
}
lxj();
?>

运行结果:

函数名为:lxj

__NAMESPACE__:当前命名空间的名称

  • 此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

<?php
namespace djxz;echo '命名空间为:"', __NAMESPACE__, '"';// 输出 命名空间为:"djxz"
?>

今天的内容到这里就结束了,明天见!!
PHP相关内容专栏点击在这里插入图片描述"PHP语法知识"
想要了解更多请点击练小杰的CSDN!!!!
欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!

在这里插入图片描述

相关文章:

PHP语法学习(第七天)-循环语句,魔术常量

老套路了&#xff0c;朋友们&#xff0c;先回忆昨天讲的内容PHP语法学习(第六天)主要讲了PHP中的if…else语句、关联数组以及数组排序。 想要学习更多PHP语法相关内容点击“PHP专栏&#xff01;” 下列代码都是在PHP在线测试运行环境中得到的&#xff01;&#xff01; 还记得电…...

数据库授权讲解一下

这条 SQL 命令是 MySQL 数据库中用于权限管理的 GRANT 语句。它用于授予用户特定的权限。下面是命令的详细解释&#xff1a; GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY Zz&#xff01;12345678 WITH GRANT OPTION;GRANT&#xff1a; 这是一个关键字&#xff0c;用于…...

组件开发的环境准备: nodejs安装,npm镜像源的修改,pnpm包管理器的安装(全局安装),基于pnpm创建脚手架项目

Node.js 是一个开源的、跨平台的 JavaScript 运行环境&#xff08;本质是Chrome引擎的封装&#xff09;,允许开发者使用 JavaScript 来编写服务器端代码 npm(Node Package Manager)是 Node.js 包管理器, 用来安装各种库、框架和工具 【Node.js官网】 https://nodejs.org 【n…...

学生成绩统计系统

实验内容 问题描述: 输入n个学生的考试成绩&#xff0c;每个学生信息由姓名与分数组成;试设计一种算法: (1)按分数高低次序&#xff0c;打印出每个学生的名次&#xff0c;分数相同的为同一名次; (2)按名次输出每个学生的姓名与分数。 基本要求: (1)学生的考试成绩必须通过…...

【Spring项目】图书管理系统

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;项目实现准备 1&#xff1a;需求 &#xff08;1&#xff09;登录 2&#xff1a;准备…...

Vivado ILA数据导出MATLAB分析

目录 ILA数据导出 分析方式一 分析方式二 有时候在系统调试时&#xff0c;数据在VIVADO窗口获取的信息有限&#xff0c;可结合MATLAB对已捕获的数据进行分析处理 ILA数据导出 选择信号&#xff0c;单击右键后&#xff0c;会有export ILA DATA选项&#xff0c;将其保存成CS…...

【开源免费】基于SpringBoot+Vue.JS高校学科竞赛平台(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 075 &#xff0c;文末自助获取源码 \color{red}{T075&#xff0c;文末自助获取源码} T075&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

【机器学习】——windows下安装anaconda并在vscode上进行配置

一、安装anaconda 1.进入清华的镜像网站&#xff0c;下载自己电脑对应的anaconda版本。网站&#xff1a;https://repo.anaconda.com/archive/ 这里我下载的版本是anaconda3-2024.10-1-Windows-x86-64 2.下载完毕后开始安装anaconda 3.配置anaconda环境变量 在设置中找到编…...

【H2O2|全栈】Node.js与MySQL连接

目录 前言 开篇语 准备工作 初始配置 创建连接池 操作数据库 封装方法 结束语 前言 开篇语 本节讲解如何使用Node.js实现与MySQL数据库的连接&#xff0c;并将该过程进行函数封装。 与基础部分的语法相比&#xff0c;ES6的语法进行了一些更加严谨的约束和优化&#…...

汽配行业数字化解决方案(一)

汽配行业数字化解决方案&#xff0c;是通过整合云计算、大数据、人工智能、物联网等先进技术&#xff0c;构建一个全面、高效、智能的数字化生态系统&#xff0c;以实现汽配供应链的全程可视化与智能化管理。该解决方案涵盖了从供应商管理、库存优化、订单处理、物流跟踪到客户…...

前端路径“@/“的使用和配置

环境&#xff1a;vitets 需要安装types/node npm install types/node --save-dev在tsconfig.json中添加 如果有tsconfig.app.json和tsconfig.node.json文件&#xff0c;则在app.json中添加 "compilerOptions": {"baseUrl":".","paths&q…...

动态规划子序列问题系列一>最长递增子序列

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int lengthOfLIS(int[] nums) {int n nums.length;int[] dp new int[n];int ret 1;//最坏情况为1//初始化for(int i 0; i < n; i) dp[i] 1;for(int i 1; i < n; i){for(int j 0; j < i-1; j)if(…...

链表头文件大更新!!!

引言 原文章:链表简介及自制链表操作头文件_自己写一个链表头文件-CSDN博客。 此次更新添加了更多功能&#xff0c;让改头文件更 人性化 。 安装教程见原文章。 介绍 linked_list.h 头文件 linked_list.h 是一个 C 头文件&#xff0c;定义了一个模板类 LinkedList&#xff…...

力扣3381.长度可被K整除的子数组的最大元素和

力扣3381.长度可被K整除的子数组的最大元素和 题目 题目解析及思路 题目要求返回一段长度为K的倍数的最大子数组和 同余前缀和 代码 class Solution { public:long long maxSubarraySum(vector<int>& nums, int k) {int n nums.size();vector<long long>…...

http.ServeMux多路复用器的设置

package mainimport ("fmt""net/http" )func first(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "多函数-first") }func second(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "多函数-second") }func ma…...

优化器与优化方法:在现代科学与工程中的应用

目录 ​编辑 优化器&#xff1a;机器学习中的参数调整 1. 梯度下降系列 2. 动量法&#xff08;Momentum&#xff09; 3. Adagrad 4. RMSprop 5. Adam 优化方法&#xff1a;寻找系统最优解 线性规划 非线性规划 凸优化 非凸优化 结论 在当今的科学和工程领域&#…...

笔记本外接显示屏没声音

1、笔记本正常有声音&#xff0c;但是外接显示屏后没有声音了怎么回事呢&#xff1f;原来外接显示屏后笔记本的声音输出会自动选择显示屏的音频输出&#xff0c;但是显示屏可能没有声音输出所以导致笔记本没有声音。 2、解决办法&#xff1a;打开笔记本设置&#xff0c;选择声…...

vue框架

Vue.js是一种用于构建用户界面的JavaScript框架。它是一个轻量级框架&#xff0c;被设计为逐渐采用的渐进式框架&#xff0c;可以与现有项目集成&#xff0c;也可以作为一个完整的单页应用程序框架使用。 Vue.js具有以下特点&#xff1a; 简单易学&#xff1a;Vue.js的API简单…...

Vue指令(一)--v-html、v-show、v-if、v-else、v-else-if、v-on、v-bind、v-for、v-model

目录 &#xff08;一&#xff09;初识指令和内容渲染指令v-html 1.v-html 案例&#xff1a; 官网的API文档 &#xff08;二&#xff09;条件渲染指令v-show和v-if 1. v-show 2. v-if &#xff08;三&#xff09;条件渲染指令v-else和v-else-if 案例 &#xff08;四…...

ElK 8 收集 MySQL 慢查询日志并通过 ElastAlert2 告警至飞书

文章目录 1. 说明2. 启个 mysql3. 设置慢查询4. filebeat 设置5. 触发慢查询6. MySQL 告警至飞书 1. 说明 elk 版本&#xff1a;8.15.0 2. 启个 mysql docker-compose.yml 中 mysql&#xff1a; mysql:# restart: alwaysimage: mysql:8.0.27# ports:# - "3306:3306&q…...

语音播报 文字转语音 edge_tts

推理队列封装import asyncio import edge_tts import time from threading import Thread from queue import Queue, Empty import osdef tts_sync_stream(text, voice"zh-CN-XiaoxiaoNeural"):"""同步流式生成&#xff08;内部用 async&#xff09;&…...

BiLSTM时间序列预测实战:用Python搞定股票价格预测(附完整代码)

BiLSTM金融时间序列预测&#xff1a;从理论到实战的Python完整指南 金融市场如同汹涌的海浪&#xff0c;价格波动背后隐藏着无数投资者的决策与情绪。对于量化分析师和算法交易者而言&#xff0c;准确预测这些波动意味着巨大的商业价值。传统的时间序列分析方法如ARIMA在面对非…...

Ollama安装路径优化:从C盘迁移到D盘的完整指南

1. 为什么需要迁移Ollama到D盘&#xff1f; 很多AI开发者在Windows系统上初次安装Ollama时&#xff0c;都会遇到一个头疼的问题——默认安装路径在C盘。随着模型文件的不断下载和项目积累&#xff0c;C盘空间很快就会被占满。我自己就经历过C盘爆红的尴尬&#xff0c;系统卡顿不…...

如何用League-Toolkit提升30%游戏决策效率?完整指南

如何用League-Toolkit提升30%游戏决策效率&#xff1f;完整指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 价值定位&#xf…...

ECharts地图标注避坑指南:解决区域地图显示不全、标注错位等常见问题

ECharts地图标注避坑指南&#xff1a;解决区域地图显示不全、标注错位等常见问题 当你在使用ECharts绘制区域地图时&#xff0c;是否遇到过地图显示不全、标注点位置偏移、JSON数据格式错误等问题&#xff1f;这些问题看似简单&#xff0c;却可能耗费开发者大量时间排查。本文将…...

Java 25记录模式深度实战:手把手带你用模式匹配解构嵌套记录,效率提升47%(JVM实测数据)

第一章&#xff1a;Java 25记录模式的演进脉络与核心突破记录模式&#xff08;Record Patterns&#xff09;作为 Java 21 首次以预览特性引入、并在 Java 22 进一步增强、最终于 Java 25 正式成为标准特性的关键语言机制&#xff0c;标志着 Java 在模式匹配演进道路上完成从“解…...

STL---stack/queue/deque/priority_queue详解(从使用到底层)

前言string&#xff0c;vector&#xff0c;list等容器&#xff0c;都在我的C专栏里有收录&#xff0c;重复的接口相似的使用我就不再过多介绍了&#xff0c;大家可以去我的C专栏里看string那篇文章&#xff0c;基本的使用写的比较详细。本文的重点在于讲解底层。stack和queue的…...

我的LVDS信号有振铃?可能是端接电阻没选对!从仿真到实测的端接方案选择指南

LVDS信号振铃问题全解析&#xff1a;从端接电阻选择到实测验证 振铃现象是LVDS信号传输中最令人头疼的问题之一。当你在示波器上看到信号边沿出现振荡波形时&#xff0c;第一反应可能是怀疑PCB布局或信号源质量。但经验丰富的工程师都知道&#xff0c;80%的振铃问题根源在于端接…...

[双重嵌入架构]:实现高精度人脸生成的AI解决方案

[双重嵌入架构]&#xff1a;实现高精度人脸生成的AI解决方案 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID 1. 技术原理&#xff1a;双重嵌入架构的创新突破 1.1 并行特征处理机制 IP-Adapter-FaceID Plus…...

告别音乐平台干扰!铜钟音乐如何让你重拾纯净听歌体验?

告别音乐平台干扰&#xff01;铜钟音乐如何让你重拾纯净听歌体验&#xff1f; 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特&#xff01;(密码重置功能已回归) 项目地址: https://gitcode.com/Gi…...