php详解之break,continue,forEach,函数,作用域,include,require,array

PHP文件包含漏洞深度解析:从原理到实战攻防 文件包含是Web开发中实现代码复用的常见技术,其核心原理是通过include、require等函数动态加载并执行指定文件。当开发者未对用户输入的文件路径进行严格过滤时,就会产生文件包含漏洞,攻击者可利用路径遍历读取服务器敏感文件,甚至通过包含恶意文件执行任意代码,从而获取服务器控制权。在安全实践中,本地文件包含(LFI)和远程文件包含(RFI)是两种主要类型,其中LFI常与日志注入、PHP包装器(如php://filter)等技术结合,实现从信息泄露到代码执行(GetShell)的完整攻击链。理解其机制并实 阅读详情

break,continue,forEach

break:遇到break,循环就直接终止掉
continue:遇到continue,停止本次循环,直接进行下一次循环

<?php
   //跳出循环
//  for($i=0; $i<10; $i++){
//  	if($i == 4){
//  		continue;
//  	}
//  	echo $i."<hr/>";
//  }
	//结束循环
	 for($i=0; $i<10; $i++){
    	if($i == 4){
    		break;
    	}
    	echo $i."<hr/>";
    }
	 
	 //forEach :用来遍历数组
	 $arr = ["北京","上海","广州","深圳"];
	 //用for循环遍历数组
	 //获取数组长度
//	 echo count($arr);
//	 for($i=0; $i < count($arr); $i++){
//	 	echo "$i => $arr[$i]"."<hr/>";
//	 }

	//推荐使用forEach遍历数组
	/*
	 * forEach(数组 as 值){
	 * 直接输出使用值}
	 * forEach(数组 as 键 => 值){
	 * 	使用数组的键和值
	 * }
	 */
//	foreach($arr as $value){
//		echo $value."<hr/>";
//	}
	
	foreach($arr as $i => $value){
		echo $i."".$value."<hr/>";
	}

?>

函数

一个可以封装复用的代码段

<?php
/*
 * function 函数名{
 *   执行代码段
 * 	返回值 
 * }
 * 注意php的函数名不区分大小写
 * php函数有默认值(在没有传递参数时,也能使用某个值进行运算,这个值就称为默认值)
 * php函数也可以进行引用传参,将函数变量与函数内部的计算关联起来
 */
// function show(){
// 	echo "show show";
// }
//// show();
//SHOW();
//定义一个参数,参数有a和b,函数功能输出a和b的和
//function total($a,$b){
//	echo$a + $b;
//}
//total(10e2,10);
//定义一个参数,参数有a和b,函数功能是返回a和b的和
//function total($a,$b){
//	return $a + $b;
//}
//$sum = total(10e2,10);
//echo $sum;//210
//函数默认值:在没有传参是,取默认值,有参数,就取参数值
function total($a,$b=10){
	echo $a + $b;
}
//total(10);
total(10, "123abc");//133

//引用传参
function test(&$a,$b){
	$a += $b;
}
$a = 6;
test($a,10);
echo $a;//16
?>

作用域

<?php
	/*
	 * 由于函数的存在,函数内部是一个独立的空间,这个空间就称为函数的局部作用域
	 * 除了函数以外的空间,就称为全局作用域
	 * 由于作用域不同,将变量分为:全局变量和局部变量
	 * 全局变量:定义在全局作用域的变量
	 * 局部变量:定义在局部作用域的变量
	 */
	
//	 $a = 10;
//	 function fn(){
//	 	echo $a;
//	 }
//	 fn();//error
	 
	//如何在局部作用域里使用全局变量  
//	  $a = 10;
//	 function fn($a){
//	 	echo $a;
//	 }
//	 fn($a);//error

	//方法1:使用超全局变量$GLOBALS
	$a = 10;
//	function fn(){
//		$GLOBALS['a'];
//	}
//	fn();//10
	
	//方法2:传参
//	function fn($test){
//		echo $test;
//	}
//	fn($a);//10

	//方法3:使用关键字 global
//	function fn(){
//		global $a;//声明所有的全局变量a
//		echo $a;
//	}
//	fn();

//局部变量:声明周期,从声明开始,到函数结束
//function fn(){
//	$b = "hello world";
//	$b .="&nbsp;&nbsp;hhhhh";
//}
//echo $b;//Error

//如何保存局部变量使其不在函数结束时清除
//js里使用闭包
//php里使用关键字static
//这中变量称为静态变量

//function fn(){
//	$i = 0;
//	$i++;
//	echo $i."<hr/>";
//}
//fn();//1
//fn();//1
//fn();//1

//function a(&$a){
//	$a*=10;
//}
//$b = 10;
//a($b);
//echo $b;//100

//function fn(){
//	static $i = 0;
//	$i++;
//	echo $i."<hr/>";
//}
//fn();//1
//fn();//2
//fn();//3

$a = 10;
$b = 100;
$c = 15;

function test(){
	global $c;//申明为全局变量
	static $d = 25;
	 $GLOBALS["a"] +=$GLOBALS["b"] + $GLOBALS["c"];
	 $d += $c;
	 echo $GLOBALS["a"]." ";
	 echo $d;
}
test();
test();

?>

include,require

<?php
/*
 * 伪类方便快捷的开发以及提高代码复用和代码维护性,往往会将一些复用的代码放在单独的文件上面,然后在需要的时候导入进来使用、
 * 导入文件方法;
 * include
 * include_once
 * require
 * require_once
 * 区别:带once只有导入第一次是生效的
 * 带require的会在所导入文件出错时报错,并阻止下面的代码的运行
 * 带include的仅会在所导入文件出错时报警,不影响下面无关代码的指向
 * @:御制符。在某行出错时,可以使用其阻止报警告
 */
// include "head.html";
// echo "cxxxxxx";
// include "foot.html";
require "test.php";
echo $a;


?>
<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	<meta http-equiv="X-UA-Compatible" content="ie=edge" />
	<title>Document</title>
</head>
<body>
	<?php require "head.html"?>
	<strong>啊哈哈哈哈哈哈哈</strong>
	<?php require_once "foot.html"?>
</body>
</html>

array

<?php
//数组
/*
 * 用于存储多个键值对组合的有序集合
 * 索引数组和关联数组
 * 索引数组:下表为数字的数组
 * 关联数组:下标为字符串
 */
 //创建方法一:array函数创建
 //索引数组
// $arr = array("北京","上海","广州","深圳");
// echo "<pre>";
// print_r($arr);
// echo "</pre>";	

//关联数组
//$arr = array("魅力之都" => "上海","火炉城市" => "重庆","梦幻花城" =>"广州");
//echo "<pre>";
//print_r($arr);
//echo "</pre>";
//echo $arr["火炉城市"];

//方法二:字面量
//$arr["魅力之都"] = "上海";
//$arr["火炉城市"] = "重庆";
//$arr["梦幻花城"] = "广州";
//echo "<pre>";
//print_r($arr);
//echo "</pre>";

//方法三:range函数生成索引数组
//$arr = range(1,10);
//echo "<pre>";
//print_r($arr);
//echo "</pre>";

$arr = range("A","a");
//echo "<pre>";
//print_r($arr);
//echo "</pre>";

//数组常用的函数:print_r\count\unset\in_array
//if(in_array("Z", $arr)){
//	echo "在数组中";
//}else{
//	echo "不在数组中";
//}

//数组和字符串(具有明显分割符)的转换与(js中的join,split)
//implode:将数组以间隔符拼接成字符串
//$arr = [1,2,3,4];
//$str = implode("=", $arr);
//echo $str;

//explode:将字符串以分隔符分成数组的每一项
//$str = "1/2/3/4/5/6";
//$arr = explode(("/"), $str);
//print_r($arr);


//数组排序
/*
 * sort,rsort:索引数组的排序,前者为升序,后者为降序
 * ksort,krsort:关联数组的排序,前者为升序,后者为降序
 * asort,arsort:关联数组的值排序,与上同
 * 
 */
// $arr = ["orange","apple","bananer","oa"];
// rsort($arr);
// echo "<pre>";
// print_r($arr);
// echo "</pre>";

//$arr = array("a" => "english","c" => "chinese","b" => "French");
//ksort($arr);
//echo "<pre>";
//print_r($arr);
//echo "</pre>";


//用一个数组分别展示两个人的信息
/*
 * 第一个:名字是张三,年龄20,性别:男
 * 第二个:李四  33  女 
 */
 $arr = array(
 	array("name" => "张三","age" => 29,"sex" => "男"),
 	array("name" =>"李四","age" => 33,"sex" => "女")
 );
// echo "<pre>";
// print_r($arr);
// echo "</pre>";

//遍历数组,并输出每个人的名字
foreach($arr as $value){
	foreach($value as $k => $v){
		echo $k."=>".$v."<hr/>";
	}
}

/*
 *     =>       一般用于数组的 键=>值
 *
 *	   ->    一般用于对象的 对象->对象属性 和 对象->对象方法 
 */
 
 
?>
PHP中的控制结构:PHP Foreach 循环 foreach 循环的工作原理是获取一个可迭代变量,并将集合的每个元素分配给一个临时变量,一次一个,直到处理完所有元素。PHP 中的 foreach 循环允许您遍历数组和对象,为数组或对象中的每个元素或属性执行。PHP 中的 foreach 循环允许您遍历数组和对象,为数组或对象中的每个元素或属性执行。的语法非常简单,我们声明一个变量来保存当前元素的值,然后是我们想要循环的数组或对象。,$value 是一个变量,它将在循环的每次迭代期间保存当前元素或属性的值。数组的元素,而内部循环遍历每个员工数组的元素。 阅读详情

相关推荐

PHP安全漏洞解析:unset函数与换行符的隐蔽攻击面

在Web安全领域,输入验证是防御各类攻击的基础。HTTP协议与后端语言解析器在处理特殊字符时可能存在差异,这种解析差异常被攻击者利用。以PHP为例,其unset函数在销毁变量时,对变量名字符串的解析存在一个细微特性:当变量名末尾包含换行符等空白字符时,可能因字符串匹配不严格而引发逻辑漏洞。这种漏洞的技术价值在于它绕过了常规的安全过滤,属于逻辑漏洞范畴,自动化扫描工具难以发现。攻击者通过精心构造包含换行符的HTTP请求参数,可污染变量名,导致关键安全过滤失效,进而可能引发文件包含等风险。本文以CTF题目[HF

weixin_33725270的博客 657

PHP foreach() 循环continue跳出循环用法简述

$arr=array("1","2","3","a"); foreach ($arr as $k=>$y){ echo $y ."\n"; } 二、如果数组是空的不会进foreach $arr =[]; foreach ($arr as $k=>$y){ echo $y. "\n"; } 三、continue:跳出本次循环继续执行后面的循环 $...

༺墨༒眉༻ 7898

PHP函数实战手册:参数精调、错误处理与性能边界

PHP函数不仅是语法工具,更是运行时与操作系统交互的契约。理解其底层原理(如系统调用、内存模型、I/O调度)是写出高可用代码的前提。本文围绕核心函数如file_put_contents、array_reduce、PDO::prepare、preg_replace_callback等,解析参数选择的物理依据(如LOCK_EX的原子性约束、true二进制输出对JWT延迟的影响)、错误处理演进(false返回 vs 异常模式)、以及真实场景下的性能瓶颈(内存复制、正则扫描复杂度、预编译缓存泄漏)。面向中初级PHP

weixin_30719711的博客 506

php break foreach_php中foreach()使用时若想跳出循环或者终止循环的实现方法

本篇文章给大家带来的内容是关于php中foreach()使用时若想跳出循环或者终止循环的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。例一:PHP中用foreach()循环中,想要在循环的时候,当满足某个条件时,想$arr = array('a','b','c','d','e');$html = '';foreach($arr as $key => $value){...

weixin_33848436的博客 3221

PHP foreach循环的用法详解

通过上述示例,你应该对PHP foreach循环的用法有了更好的理解。它是一种强大的循环结构,可以用于遍历数组和关联数组,并且可以在循环体中执行各种操作。在本文中,我们将详细介绍foreach循环的用法,并提供一些示例代码来帮助你更好地理解。在这个示例中,我们定义了一个关联数组,表示一个学生的信息。通过foreach循环,我们遍历数组中的每个键值对,并将键和对应的值打印出来。通过foreach循环,我们遍历数组中的每个元素并将其打印出来。则是在每次循环中当前元素的值。,我们可以在循环体中修改数组元素的值。

UqConstruction的博客 477

基于LSTM语义分析的企业风险预测系统

在数字化时代,企业面临着前所未有的挑战和机遇,而风险管理作为确保企业稳定发展的关键一环,其重要性日益凸显。为了及时、准确地监测和分析企业相关的风险,并预测可能带来的风险,本文介绍了一种基于长短期记忆(LSTM)语义分析的企业风险预测系统。该系统利用深度学习技术,通过将收集到的企业数据进行预处理和分析,结合LSTM模型对文本进行深度语义分析,从而实现对潜在风险的预测和评估。系统设计方面,该系统包括数据预处理、LSTM模型构建与训练、风险预测以及可视化展示等模块。

qiufangtaowvnyyidtf的博客 1391

PHP语言的循环实现

在编程的世界中,循环结构是一种非常重要的基本构造。它允许我们多次执行一段代码,直至达到某个条件。在PHP语言中,循环结构非常灵活且易于使用。无论是处理数组、字符串,还是进行重复的计算,循环都会成为我们在开发中不可或缺的工具。在本文中,我们将深入探讨PHP中的循环结构,包括forwhiledo...while和foreach循环,详细讲解它们的用法、特点、以及在实际开发中的应用。

2501_90119103的博客 1207

从零到一:Abaqus与Matlab联合仿真的自动化流程构建指南

本文详细介绍了如何构建Abaqus与Matlab联合仿真的自动化流程,涵盖基础架构设计、关键接口技术实现、结果提取与处理技术以及高级参数化优化流程。通过Python脚本作为桥梁,实现数据传递和任务控制,帮助工程师提升仿真效率。特别强调了版本兼容性、异常处理和性能监控等实用技巧。

weixin_29090089的博客 611

php基础

1、break和continue的区别? break可以终止循环,continue没有break强大,只能终止本次循环而进入到下一次循环中。 2、echo(),print(),print_r()的区别? echo是PHP语句;而print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用),echo输出一个或者多个字符串,print()只能打印出简单类型变量的值(如ints...

weixin_34082854的博客 79

最新版IAR9.40和注册工具

IAR最新版的IDE在编译速度和代码提示等各个方面上都有很大提升,软件这个东西果然还是越新越好。之前的时候,IAR v9系列网上很多人都说能用,但是又没有把 IAR v9系列的注册方法写的很清楚,导致我一直都用注册老版本v8的方法去注册v9。结果注册后都会提示。

xue_nuo的博客 4万+

别再瞎调了!手把手教你搞定STM32步进电机PID速度环(附完整代码与比例系数详解)

本文详细解析了STM32步进电机PID速度环的完整实现过程,从算法输出到脉冲频率的转换链路,重点讲解了比例系数的确定方法及系统标定实验。通过完整的代码示例和调试技巧,帮助工程师解决实际应用中的常见问题,提升步进电机控制精度与稳定性。

weixin_28729331的博客 214

PHP学习笔记

PHP配置、语法基础和一些算法基础

lewisCK的博客 1166

智能电网中的智能调度与优化算法研究

本文研究智能电网中的智能调度与优化算法,旨在提高电网运行的效率与可靠性,减少能源浪费和设备故障的风险。在智能电网日益复杂化的背景下,传统的调度方法已难以满足高效、稳定的运行要求,因此亟需借助先进的优化算法对电网进行智能调度。本文第一深入分析智能电网调度中的关键问题与挑战,探讨优化算法在智能电网中的应用现状,并分析常见的优化算法,如遗传算法、粒子群算法和模拟退火算法。随后,本文构建智能电网的调度优化数学模型,并对电网负荷、发电模型及约束条件进行详细建模。在算法部分,本文提出改进的粒子群算法和遗传算法,并结合M

weixin_44553616的博客 1889

PHP错题整理

1.PHP中 的 include 和 require 有什么区别? 一旦包含的文件发生错误,require 将停止执行,include 将在错误之后继续执行代码 (注:require 一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误。 include 一个文件存在错误的话,那么程序不会中断,而是继续执行,并显示一个警告错误。) 2.哪个函数用于确定对象类型? is_a() (注:is_a如果对象属于该类型或该类是此对象的父类则返回TRUE。) 3.PHP 对空格敏感吗? 不敏感 .

shangMD01的博客 690

给新人的储能系统入门图解:从电芯到EMS,一张图看懂BESS里那些‘黑话’

本文通过视觉化拆解储能系统,从电芯到EMS详细解析BESS中的关键组件和行业术语。涵盖电芯参数、模组组装、PCS功能、BMS与EMS分工,以及SOC、DOD等关键运维参数,帮助新人快速理解储能系统的核心技术和应用场景。

weixin_42522964的博客 592

VLM,VLA,VLN的区别与联系

VLM 提供了理解世界的“眼睛和大脑”,VLN 赋予了这个智能体在空间中“移动的双腿”,而 VLA 则进一步赋予了它“灵巧的双手”来改变世界。三者共同构成了一个完整具身智能体的核心能力模块。

l0409044222的博客 1311

php面试题之三——PHP语言基础(基础部分)

1. strlen( )与 mb_strlen( )的作用分别是什么(新浪网技术部) strlen和mb_strlen都是用于获取字符串长度。 strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数。如果是多字节编码,如 gbk 和 utf-8,使用 strlen 得到是该字符的总字节数; 可以使用mb_strlen获取其字符个数,使用mb_strlen 要注意两点,一是要

mengdc的博客 881

一个服务如何被找到、被调用、被看见:注册中心、发布注册、发现调用与服务监控的治理闭环

服务数量一多,“对方在哪儿”就成了时刻变化的变量。本文沿发布、注册、发现、调用、监控的治理闭环展开:注册中心的数据模型、健康检查与AP/CP取舍,自我保护、推空保护与本地快照三道自保机制;服务发布的启动器、动态代理、发布管理器、协议服务器与登记顺序;消费端的服务目录、请求ID配对、六种集群容错与三种发现模式;日志、指标、链路三支柱与熔断舱壁。配套五个Java演示程序实测:默认参数下宕机实例平均240秒才被摘除,优雅下线可降至45秒,统计窗口长于租约会让自我保护失效,尾部采样可捕获全部慢请求。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 169万+

rea 逆向 CLI 完整指南:一条命令跑通二进制逆向,从环境体检到引用取证

一个陌生的 ELF,或一个 Electron 应用摆在面前,不想打开 IDA 或 Ghidra 的图形界面。rea 就是为此做的二进制逆向 CLI:一条命令在本地完成分析,把架构、符号、函数、引用和原始证据一起吐回来。读完这篇,你能在终端里跑通第一个分析,知道每个输出字段怎么读,出错时该查哪三个地方。 ## 免安装最短路径:rea 环境体检与二进制分析第一跑 先做体检,再谈分析。环境自检就一道

gitblog_00626的博客 835

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PHP-CS-Fixer 规则详解:no_unneeded_control_parentheses 移除控制语句多余括号

`no_unneeded_control_parentheses` 是 PHP-CS-Fixer 内置的一条可配置(CONFIGURABLE)规则,专门负责清理 `break (2)`、`clone($a)`、`echo("foo")`、`return (1 + 2)`、`yield(2)` 这类控制语句周围"多余"的括号,让代码更贴近原生语言习惯。本文将完整讲解该规则的配置项、默认值与两个官方示

gitblog_00278的博客 382

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Symfony polyfill-php80 详解:在 ShowDoc 中为旧版 PHP 补齐 PHP 8.0 核心特性

本文以 [server/vendor/symfony/polyfill-php80/README.md](https://link.gitcode.com/i/6a009c6cad2c832a1250d3a12bee3ecd) 为骨架,结合该组件在开源 API 文档工具 ShowDoc 仓库中的实际源码与调用场景,系统讲解 Symfony Polyfill / Php80 组件:它如何在 PHP

gitblog_00001的博客 370

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

如何十分钟把 Folia 歌词动画播放器装好:Windows、macOS、Linux 全平台一次跑通

Folia 是一款以全屏歌词动画为核心的播放器,本地曲库、Navidrome 服务器、网易云/QQ/酷狗等在线音源都能接。渠道结论先行:Windows 和 macOS 走网盘镜像装 `.exe` / `.dmg` 最快,通用 Linux 解压便携包直接跑,Arch 走 AUR 一条命令。 ## 最短路径:Windows / macOS 转存网盘,双击装好 ⚠️ 渠道只认三条官方路:[READM

gitblog_00832的博客 717

PHP性能优化实战:20个提升代码效率的核心技巧

PHP作为广泛使用的服务器端脚本语言,其性能优化直接影响Web应用响应速度与资源消耗。从底层原理看,PHP解释器执行字节码时,字符串处理、循环结构和数据库操作等常见场景存在显著性能差异。通过采用单引号字符串、预处理语句和OPcache等技术手段,可提升30%-400%的执行效率,特别适用于高并发电商、社交平台等场景。本文基于str_replace比preg_replace快4倍、switch优于if-else等热词验证的优化方案,结合数据库UNBUFFERED查询等实战技巧,系统讲解如何构建高性能PHP应用

weixin_34277853的博客 368

给老款 Mac 装新版 macOS:OpenCore Legacy Patcher 3 阶段完整流程指南

OpenCore Legacy Patcher 是免费开源的引导补丁工具,在开机时向内存注入修正数据解除机型限制,让老款 Intel Mac 装上 Big Sur 到 Sequoia 的新版 macOS。照本文 3 个阶段操作,你能拿到可引导的安装 U 盘、装好的新系统,以及补齐图形与 Wi-Fi 等硬件功能的根补丁。 ## 它到底在底层做了什么 OCLP 不改写磁盘,而是在开机阶段由 Ope

gitblog_00352的博客 269

深入VulHunt引擎:一条Lua规则如何触发从FLIRT匹配到漏洞报告的完整管线

VulHunt 是 Binarly 团队开源的**二进制漏洞检测框架**(Vulnerability Detection Framework)。它基于 BIAS(Binary Analysis and Inspection System)二进制分析系统构建,允许你用一条简单的 **Lua 规则**,驱动从 **FLIRT 签名匹配**、符号化数据流分析、反编译取证,到最终 **漏洞报告(Findi

gitblog_00133的博客 184
上一篇: php基础详解之变量,常量,数据类型,类型转换,运算符,分支与循环
下一篇: 字符串的创建,查找,替换,截取,json字符串
Lydbcjava
博客等级 码龄8年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值