PHP流程控制与文件包含:基础与关键要点

news2024/10/7 2:26:38

目录

PHP流程控制

顺序结构:

分支结构:

Switch分支:

PHP循环结构

for循环

while循环

do-while循环

while和do-while的区别:

循环控制

流程控制代替语法

PHP文件包含

PHP文件包含的作用

PHP文件包含的四种形式

PHP文件加载

文件加载原理

文件加载路径

文件嵌套包含

include和require的区别


PHP流程控制

流程控制:即代码的执行的方向

顺序结构:代码从上到下,顺序执行。

分支结构:给一个条件,同时有多种可执行代码块,然后会根据条件执行某一段代码

循环结构:在某个条件控制的范围内,指定的代码快可以重复执行

顺序结构:

从上到下,依次执行

分支结构:

if分支:

给定一个条件,同时为该条件设置多种情况,然后通过条件判断来实现具体的代码块。

if-else格式

if(条件表达式)
{
//满足条件执行语句
}
else
{
//不满足条件执行语句
}

if-elseif-else格式

if(条件表达式)
{
//满足条件执行语句
}
elseif(条件表达式)
{
//if条件如果不满足会来判断这个条件是否满足
}
else
{
//不满足条件执行语句
}

Switch分支:

有一组情形存在,通过一个条件,有很多值,但是每个值都会对应着不同的代码进行执行。 Switch判断方式:是将条件放到分支结构的内部进行判断。

Switch语法格式:

switch(条件表达式)
    case 1:
    //执行的代码段1
    break; 
#这是是让匹配到的结果以后直接退出,不再匹配,如果不加break,它会继续向下匹配。
    case 2:
    //执行的代码段2
    ...
    default
    //都没有匹配到的执行的代码段n

PHP循环结构

代码段在一定的控制下,可以多次执行

for循环

for循环的语法格式:

for(条件表达式1,条件表达式2,条件表达式3)
{
    循环体
}
//条件表达式1:定义初始条件
//条件表达式2:边界判定,限制循环执行的次数
//条件表达式3:用来执行条件变换(自操作)

例如使用for循环输出0-9十个数字

<?php
for ($i = 1; $i <= 10; $i++) {
    echo $i;
}
echo '<br/>';
for ($i = 1; ; $i++) {
    if ($i > 10) {
        break;
    }
    echo $i;
}
echo '<br/>';
$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    echo $i;
    $i++;
}
echo '<br/>';
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?> 

while循环

语法格式:

条件初始化
while(条件表达式)
{
循环体
//循环条件的变化
}
//条件表达式就是边界条件

例如:

<?php
$i=1;
while($i<=10)
{
    echo $i,'<br/>';
    $i++;
}
?> 

 

do-while循环

do-while语法格式:

初始化变量
do
{
循环体
//循环条件改变
}
while(条件表达式)

while和do-while的区别:

while首先进行条件匹配然后执行循环体,有可能出现一次就条件不满足,那么就会直接失败(循环体一次都不执行)。DO-while就是先将循环体执行一次,然后再判断条件(至少会执行一次)。

循环控制

在循环内部对循环本身进行控制

中断控制:重新开始循环,循环体中还有其他内容,也再执行。

continue:当前自己循环后面内部不再执行,同时内部循环如果还有循环体也不在执行,重新来过

终止控制:循环直接结束

break:当前自己循环结束,同时外部也结束(如果还有外部不受影响)

流程控制代替语法

流程控制代替语法:分支和循环的替代语法

PHP本身是嵌入到HTML中的脚本语言,需要在HTML中书写一些关于判断或者循环的结构语法,必须符合PHP标签规范,需要HTML与PHP进行混搭,如果使用原始的PHP代码那么会非常不美观。

需求:打印一个九九乘法表,使用表格显示。

<table border=1>
    <?php for($i=1;$i<10;$i++){?>
    <tr>
        <?php for($j=1;$j<=$i;$j++){?>
            <td>
                <?PHP echo $i .'*' . $j . '=' . $j*$i;?>
            </td>
        <?php }?>
    </tr>
    <?php } ?>
</table>

 

在PHP书写到HTML中的这些大括号很不美观,所以php提供了一种替换机制,让其可以不用书写大括号

for(;;){---->for(;;):

}------------>endfor;

PHP文件包含

文件包含:在一个PHP脚本中,去将另外一个PHP文件包含进来,去合作完成一件事情

PHP文件包含的作用

文件包含的意义:

1、要么使用被包含文件中的内容,实现代码的共享(重用);向上包含;在当前脚本要用某个代码之前包含别的文件

2、要么自己有的东西可以给别人使用,实现代码的共享(重用);向下包含;在自己有某个东西的时候,需要别的脚本来显示

作用:分工合作,每个脚本做的事情是不一样的,因此可以使用协作的方式共同完成一件事情

PHP文件包含的四种形式

include:包含文件

include_once:系统会自动判断文件包含过程,是否已经包含过(一个文件最多只能包含一次)

require:与include一样

require_once:与include_once一样

例如:

include1.php:

<?php
//被包含文件
define PI 3.14;
$a=100;
echo $a;
?>

include2.php:

<?php
​
//包含文件:使用数据
    include 'include1.php';
    //引入被包含文件
    echo $a,PI;
?>

这样include2就可以使用include1中的变量

PHP文件加载

文件加载原理

PHP代码的执行流程:

1、读取代码文件(PHP程序)

2、编译:将PHP代码转换为字节码(生成opcode)

3、zendengine来解析opcode,按照字节码去进行逻辑运算

4、转换为对应的HTML代码

文件加载原理:

1、在文件加载(include或者require)的时候,系统会自动的讲包含文件中的代码相当于嵌入到当前文件对应的代码中

2、加载位置:在哪里加载,对应的文件中的代码嵌入的位置就是对应的include的位置;

3、在PHP中被包含的文件是单独进行编译的。

PHP代码在编译的过程中如果出现了语言错误,那么就会失败;但是如果被包含文件有错误的时候,系统难过会在执行到包含include这条语句的时候才会报错;

文件加载路径

文件加载的时候需要指定文件路径,才能保证PHP正确的找到对应的文件

文件加载的路径包含两大类:

绝对路径:

  1. 从磁盘的根目录开始(本地决绝路径)

    windows:盘符C:/路径

    Linux:/路径

  2. 从网站的根目录开始(网络绝对路径)

    /:相对网站主机名字对应的路径

相对路径:从当前文件所在目录开始的路径

.| ./:表示当前文件夹

../:上级目录(当前文件夹的上一级目录)

绝对路径和相对路径的加载区别:

1、绝对路径效率偏低,但是相对安全;

2、相对路劲相对效率偏高,但是容易出错;

文件嵌套包含

文件嵌套包含:一个文件包含另外一个文件,同时被包含的文件又包含了另外一个文件。

例如:

include3.php
<?php
//包含文件:使用数据
    $a=100;
    const PI 99;
?>
include4.php
<?php
​
//包含文件:使用数据
    include 'include3.php';
    //引入被包含文件
    echo $a,PI;
?>
include5.php
<?php
​
//包含文件:使用数据
    include 'include4.php';
    //引入被包含文件
    echo $a,PI;
?>

嵌套包含就很容易会出现相对路径出错的问题:相对路径会因为文件的包含而改变。

include和require的区别

include和include_once的区别:

include系统会碰到一次,执行一次;如果对同一个文件进行多次加载,那么系统就会执行多次。

include_once:系统碰到多次,也只会执行一次。

require和include的区别:

本质一样的,只是在遇到错误时,报错的严重形式不同;

include的错误级别较轻;如果前面代码出错,后面代码会执行

require的错误级别较重;如果前面代码出错,后面代码不再执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【spring cloud学习】3、Eureka Server注册中心

Eureka本身是Netflix开源的一款注册中心产品&#xff0c;并且Spring Cloud提供了相应的集成封装。选择Eureka作为注册中心实例来讲解是出于以下原因&#xff1a; &#xff08;1&#xff09;Eureka在业界的应用十分广泛&#xff0c;整个框架经受住了Netflix严酷生产环境的考验。…

Qt中的信号和信号槽(一)

目录 1. 信号和槽概述 信号和槽的关系 2. 标准信号槽使用 标准信号/槽 示例&#xff1a; 3. 自定义信号槽使用 自定义信号 自定义槽 示例&#xff1a; 1. 信号和槽概述 信号和槽是一种事件驱动的通信机制&#xff0c;广泛应用于Qt框架的事件处理、GUI编程、网络通信等…

如何在教育与科研领域使用ChatGPT

ChatGPT提示是您给予ChatGPT的一系列指示&#xff0c;以便它能够按需生成结果。由于ChatGPT是一种会话型人工智能&#xff0c;因此它需要明确的指示才能生成准确的结果。 ChatGPT提示的结构通常是以指令格式呈现的。它看起来像是您在与AI交流&#xff0c;给予它执行特定任务的…

基于树莓派4B的OpenCV安装与简单应用(真速通版)

前言&#xff1a;本文为手把手教学树莓派4B的OpenCV安装与简单应用&#xff08;真速通版本&#xff09;&#xff0c;树莓派4B最为目前最新款的树莓派家族一员深受创客和开发者喜爱。树莓派4B作为一款搭载 Cortex-A72 系列芯片的板载电脑&#xff0c;其不仅可以作为简单的 MCU 进…

第三方库介绍——Protobuf库(更高效的协议)

文章目录 protobuf综述传输协议与指令创建协议编译协议介绍addressbook.pb.h文件序列化与反序列化的接口 利用soctet实现客户端与服务端传输协议Linux&#xff08;Ubuntu&#xff09;安装protoc步骤编写案例代码Cartoon.prototcpsocket.hMyTcpsocket.hclient.cppserver.cppCMak…

01.4进程原理和系统调用--->经典的CFS调度器

进程的一些正常状态 什么是进程 操作系统作为硬件的使用层&#xff0c;提供使用硬件资源的能力&#xff0c;进程作为操作系统使用层&#xff0c; 提供使用操作系统抽象出的资源层的能力。 进程&#xff1a;是指计算机中已运行的程序。进程本身不是基本的运行单位&#xff0c;…

【微服务】springboot 通用限流方案设计与实现

目录 一、背景 二、限流概述 2.1 dubbo 服务治理模式 2.1.1 dubbo框架级限流 2.1.2 线程池设置 2.1.3 集成第三方组件 2.2 springcloud 服务治理模式 2.2.1 hystrix 2.2.2 sentinel 2.3 网关层限流 三、常用限流策略 3.1 限流常用的算法 3.1.1 令牌桶算法 3.1.2 …

2023最新Java面试八股文汇总(五十万字总结版)

写在前面 今年的疫情&#xff0c;让招聘面试变得雪上加霜。已经有不少大厂&#xff0c;如腾讯、字节跳动的招聘名额明显减少&#xff0c;面试门槛却一再拔高&#xff0c;如果不用心准备&#xff0c;很可能就被面试官怼得哑口无言&#xff0c;甚至失去了难得的机会。 现如今&a…

<Linux开发>驱动开发 -之- Linux RTC 驱动

&#xff1c;Linux开发&#xff1e;驱动开发 -之- Linux RTC 驱动 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细…

Dubbo【 Dubbo概念(什么是分布式系统、什么是RPC、核心组件、Zookeeper注册中心 )】(一)-全面详解(学习总结---从入门到深化)

目录 Dubbo概念_什么是分布式系统 什么是分布式 Dubbo概念_什么是RPC Dubbo概念_简介 Dubbo概念_核心组件 Dubbo配置开发环境_Zookeeper注册中心 Dubbo配置开发环境_管理控制台 Dubbo入门案例_需求介绍 Dubbo入门案例_配置开发环境 Dubbo入门案例_服务生产者配置…

VLC-QT源码编译(Windows10+VS2020+MSVC20019+QT5.15)

参考VLC-Qt的编译与使用 windows10VS2019qt5.15 下载源码 VLC-QT https://github.com/vlc-qt/vlc-qt可以通过git或者直接下载ZIP文件&#xff0c;但是里面的libvlc-header和packaging没有下载下来&#xff0c;需要再自行下载。 VLC https://download.videolan.org/vlc/las…

行为型模式--备忘录模式

目录 概述 结构 案例实现 “白箱”备忘录模式 总结&#xff1a; “黑箱”备忘录模式 优缺点 优点&#xff1a; 缺点&#xff1a; 使用场景 概述 又叫快照模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这…

zeromq的学习笔记

ctx_t 在创建ctx_t时&#xff0c;会设置以下参数 _io_thread_count io线程数默认是1 _max_sockets最大socket数是1023 _starting标识设置为true,此时socket还没有创建 _terminating设置为false,在调用zmq_ctx_term时该标识会设置为true _tag设置为ZMQ_CTX_TAG_VALUE_GOOD&…

mySql和VSC++

确认主机服务里的mysql服务已打开 使用组合键“winR”运行“services.msc”&#xff0c;进入本地服务窗口&#xff1b; 2.进入本地服务窗口后&#xff0c;在右侧服务列表中&#xff0c;查找到“ mysql ”服务选项&#xff1b; 3.查找到mysql服务选项后&#xff0c;双击打开mysq…

C++ 面向对象(3)——重载运算符和重载函数

C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不相同。 当您调用一个重…

FDM3D打印系列——3、常用打印材料介绍

大家好&#xff0c;我是阿赵。 FDM3D打印机一般都可以支持多种打印材料的&#xff0c;下面来介绍一下几种常用的打印材料 一、PLA 使用FDM打印&#xff0c;最常见的材料就是PLA了 PLA&#xff08;Polylactic acid&#xff09;&#xff0c;中文名为生物降解塑料聚乳酸&#…

网络安全面试题,渗透测试面试总结

1.什么是WebShell? WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的─种命令执行环境&#xff0c;也可以将其称做为─种网页后门。黑客在入侵了─个网站后&#xff0c;通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在─起&#xff0c;然后就可…

【Vue3】生命周期(钩子)函数

在 Vue 3 中&#xff0c;生命周期函数已经被重新设计为钩子函数&#xff0c;并且与 Vue 2 中的生命周期函数有所不同&#xff0c;可以在 setup 函数中使用 onXXX 形式的钩子函数来执行对应的操作。以下是选项式 API 和组合式 API 中常用的几个钩子函数对比&#xff1a; beforeC…

【Java】PriorityQueue--优先级队列

目录 一、优先级队列 &#xff08;1&#xff09;概念 二、优先级队列的模拟实现 &#xff08;1&#xff09;堆的概念 &#xff08;2&#xff09;堆的存储方式 &#xff08;3&#xff09;堆的创建 堆向下调整 &#xff08;4&#xff09;堆的插入与删除 堆的插入 堆的…

Kubernetes(k8s)容器编排组件介绍

目录 1 整体架构1.1 Master 架构1.2 Node 架构 2 k8s部署组件介绍2.1 K8s 集群架构图2.2 k8s控制组件2.2.1 控制平面2.2.2 kube-apiserver2.2.3 kube-scheduler2.2.4 kube-controller-manager2.2.5 etcd 2.3 k8s运行组件2.3.1 k8s节点2.3.2 容器集2.3.3 容器运行时引擎2.3.4 ku…