网站职业技能培训有哪些项目,设计软件教程,杭州模板开发建站,阳江市做网站的公司由于之前没系统的学习PHP语言#xff0c;都是在做题时遇到不会的才去查#xff0c;后来发现这样的效率非常低#xff0c;审代码别人一眼扫出漏洞#xff0c;而我还需要去查一下这行代码的意思#xff0c;那个函数的作用#xff0c;查当然要查#xff0c;但连简单的语法都…由于之前没系统的学习PHP语言都是在做题时遇到不会的才去查后来发现这样的效率非常低审代码别人一眼扫出漏洞而我还需要去查一下这行代码的意思那个函数的作用查当然要查但连简单的语法都不懂就太说不过去了有时候甚至直接将一整段代码扔给AI让它解读这样对代码审计的能力根本不能提升
所以我这次决定系统的学习一次PHP语言为了在后续的解题过程中不用总依赖AI也可以很快审清代码逻辑。
PHP语言的功能非常强大在Web开发中也占据着非常重要的地位这些都懂就不详细举例直接开始着手对PHP语言进行学习。
1、PHP语言的基本结构
PHP脚本通常以 ?php 开始以 ? 结束这些标签告诉 PHP 解释器其中的内容是 PHP 代码。 ?php // PHP 代码 ? 2、输出内容
使用 echo 或 print 语句输出内容 ?php echo Hello, World!; print Hello, World!; ? 3、变量
变量以 $ 开头变量名区分大小写 ?php $variable Hello, World!; echo $variable; ? 说到变量就不得不提全局变量了
全局变量
超全局变量(Superglobals)是PHP中内置的特殊变量它们在脚本的任何作用域全局、函数、类方法等中都可以直接访问无需使用 global 关键字声明。这些变量由PHP预定义用于收集来自不同来源的数据。
完整的PHP超全局变量列表
超全局变量作用$_GET获取 URL 查询字符串?keyvalue)传递的参数$_POST获取 HTTP POST 请求提交的表单数据$_REQUEST 包含 $_GET、$_POST、 和 $_COOKIE 的数据直接使用有一定的 安全风险 $_SERVER包含服务器和执行环境信息如 IP、User-Agent、请求方法等$_SESSION存储会话数据需先 session_start() $_COOKIE获取客户端发送的 HTTP Cookies$_FILES获取上传文件的信息如$_FILES[file][name]$_ENV获取系统环境变量如 $_ENV[PATH] $GLOBALS引用全局作用域中的所有变量如$GLOBALS[var] 超全局变量 VS 普通变量
特性超全局变量普通全局变量作用域全局自动生效需 global 声明命名前缀$_如 $_GET 自定义如 $count 用途请求数据、服务器信息等一般程序逻辑变量是否可自定义否PHP预定义是
4、数组
数组数组是存储多个值的变量。 5、常用符号
{}
大括号 {} 主要用于控制代码块的范围和作用域 确保代码的结构清晰和逻辑准确。 .
. 在PHP中用于连接字符串 //
注释符用于在代码中添加说明性文字这些文字不会被执行。PHP 支持多种注释方式包括单行注释和多行注释
PHP中注释符比较广泛例如 # 和 /* */ 都可以作为注释符
例如 ?php //这是一个单行注释 #这也是一个单行注释 /* 这是一个多行注释 可以包含多行内容 不会被执行 */ echo Hello, World!; ? 是用于键值对的语法通常在数组定义中使用表示键和值之间的映射关系。
这个有点抽象例如: ?php $person array( name China, //name China 是键值对 name 是键keyChina 是值value age 76, city Beijing ); echo $person[name]; // 输出: China echo $person[age]; // 输出: 76 echo $person[city]; // 输出: Beijing ? [ ]
在PHP中中括号 [ ] 有多种用途主要用于数组操作数组定义、访问、修改和字符串操作访问、修改字符串
中括号 [ ] 也可以用于 列表解构 特别是在 foreach 循环中处理多维数组或键值对
列表解构
?php //定义一个二维数组 $array [ [apple, banana], [cherry, orange] //包含两个子数组的二维数组每个子数组包含两个水果名称字符串 ]; //使用foreach循环结合数组解构遍历 foreach ($array as [[$fruit1, $fruit2]]) { //当前子数组的元素会被自动解构赋值到变量 $fruit1 和 $fruit2 第一次循环 $fruit1apple $fruit2banana 第二次循环 $fruit1cherry $fruit2orange echo $fruit1 . . $fruit2 . \n; //输出 第一个数组与空格拼接后再与输出的第二个数组拼接再换行 的值 } // 输出: // apple banana // cherry orange ? 键值对解构 ?php //定义一个关联数组,包含3个元素名字、年龄、城市 $array [ name China, age 76, city Beijing ]; //使用foreach循环遍历数组 array() foreach ($array as $key $value) { //$array as $key 表示每次循环中当前元素的键会赋值给 $key 值会赋值给 $value。 echo $key . : . $value . \n; 将键、冒号、值 连接起来输出 } // 输出: // name: China // age: 76 // city: Beijing ? 6、数据类型
PHP 支持多种数据类型包括字符串、整数、浮点数、布尔值、数组和对象
?php $string Hello, World!; //字符串 $integer 123; //整数 $float 123.45; //浮点数 $boolean true; //布尔值 $array array(apple, banana, cherry); //数组 $object new stdClass(); //对象 stdClass是 PHP 的一个内置类它是一个空的类没有任何属性和方法。它通常用于创建一个通用的对象。 $object-name John; //表示访问 $object 对象的 name 属性name 是一个属性名它在 $object 对象中被动态创建将字符串 John 赋值给 name 属性。 ? 7、控制结构
条件语句
if 条件语句最简单 ?php
$age 18; //这里的年龄为了简单就直接赋值而通常条件判断中需要获取用户输入if ($age 18) {echo 您已成年可以进入。;
}
? if else 语句 ?php
$age 18; if ($age 18) {echo 您已成年可以进入。;
} else {echo 您未成年禁止进入;
}
? if - elseif - else 多重结构 ?php
$grade 85;if ($grade 90) {echo 优秀;
} elseif ($grade 80) {echo 良好;
} elseif ($grade 60) {echo 及格;
} else {echo 不及格;
}
? 三元运算符 ?php
$isMember true; //创建一个名为 $isMember 的布尔型变量并将值 ture 赋值给它ture 表示 是会员如果改为 false 则表示 不是会员。
$message $isMember ? 欢迎会员 : 请注册成为会员; //检查 $isMember 的值如果为 ture 则选择 ? 后面的第一个值欢迎会员!;如果为 false 则选择 : 后面的第二个值 请注册成为会员!
echo $message;
? switch语句 ?php
$day Monday;switch ($day) {case Monday:echo 今天是星期一;break;case Tuesday:echo 今天是星期二;break;case Wednesday:echo 今天是星期三;break;default:echo 今天是周末或其他日子;
}
? 空值合并运算符??
但这个有 PHP7.0版本 引入的特性 的要求作用是检查左侧值是否存在且不为null 空值如果是则返回左侧值否则返回右侧值 ?php
$username $_GET[user] ?? 访客;
echo 欢迎 . $username;
? 循环语句
for循环 ?php
// 打印1到5的数字
for ($i 1; $i 5; $i) {echo $i . ;
}
// 输出: 1 2 3 4 5
? while循环 ?php
// 打印1到5的数字
$i 1;
while ($i 5) {echo $i . ;$i;
}
// 输出: 1 2 3 4 5
? do - while 循环 ?php
// 至少执行一次打印1到5的数字
$i 1;
do {echo $i . ;$i;
} while ($i 5);
// 输出: 1 2 3 4 5
? foreach 循环遍历数组 ?php
// 遍历数组
$colors [红色, 绿色, 蓝色];foreach ($colors as $color) {echo $color . ;
}
// 输出: 红色 绿色 蓝色// 带键名的遍历
$age [小明 18, 小红 20];foreach ($age as $name $value) {echo $name 的年龄是 $value 岁br;
}
/*
输出:
小明的年龄是18岁
小红的年龄是20岁
*/
? 循环控制语句 ?php
// break 示例
for ($i 1; $i 10; $i) {if ($i 5) {break; // 当$i等于5时退出循环}echo $i . ;
}
// 输出: 1 2 3 4// continue 示例
for ($i 1; $i 5; $i) {if ($i 3) {continue; // 跳过当前迭代}echo $i . ;
}
// 输出: 1 2 4 5
? 嵌套循环 ?php
// 打印乘法表
for ($i 1; $i 9; $i) {for ($j 1; $j $i; $j) {echo $j × $i . ($i * $j) . ;}echo br;
}
? 8、函数
PHP函数是一段可重复执行的代码块。
?php function sayHello($name) { //定义一个函数 echo Hello, . $name . !; } sayHello(John); //调用函数 ? 9、文件操作
读取和写入文件 // 写入文件如果文件不存在会自动创建
$file example.txt;
$content 这是要写入文件的内容\n第二行内容;// 写入文件
file_put_contents($file, $content);echo 内容已写入文件; $file example.txt;// 读取整个文件内容
$content file_get_contents($file);
echo 文件内容br . nl2br($content); // nl2br() 将换行符转为HTML的br// 或者逐行读取
$lines file($file);
echo brbr逐行读取;
foreach($lines as $line) {echo br . htmlspecialchars($line);
} 10、表单处理
处理HTML表单提交的数据 ?php if ($_SERVER[REQUEST_METHOD] POST) { $name htmlspecialchars($_POST[name]); echo Hello, . $name . !; } ? !DOCTYPE html html langen head meta charsetUTF-8 titleSimple PHP App/title /head body form methodpost label fornameName:/label input typetext idname namename input typesubmit valueSubmit /form /body /html 11、错误处理
处理错误和异常 ?php if (!file_exists(example.txt)) { die(File not found); } try { $content file_get_contents(example.txt); echo $content; } catch (Exception $e) { echo Error: . $e-getMessage(); } ? 12、会话管理
使用会话管理用户状态
?php session_start(); if (!isset($_SESSION[count])) { $_SESSION[count] 0; } $_SESSION[count]; echo You have visited this page . $_SESSION[count] . times.; ? 13、日期和时间
处理日期和时间
?php echo date(Y-m-d H:i:s); // Y - 4位数的年份如 2023 ,m - 2位数的月份01 到 12 ,d - 2位数的日期01 到 31 ,H - 24小时制的小时00 到 23 ,i - 分钟00 到 59 ,s - 秒00 到 59 ? 14、正则表达式
使用正则表达式进行字符串匹配和替换. ?php // 要验证的电子邮件地址 $email exampletest.com; // 正则表达式模式 $pattern /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/; // 使用preg_match函数进行匹配 if (preg_match($pattern, $email)) { echo 电子邮件地址 $email 是有效的。; } else { echo 电子邮件地址 $email 是无效的。; } ? 15、PHP语言的实战学习及运用
对于学习PHP语言更多的都是选择 VScode 这个程序VScode 中文官网vscode中文网 下载 Visual Studio Code
下载安装好后进行汉化 VScode 使用 g 编译 .c文件 或 .cpp文件
进行 g 的配置
g 也叫GCC在Windows 中使用MinGW方式实现 g分32和64位
下载配置 g
网盘地址通过网盘分享的文件x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z 链接: https://pan.baidu.com/s/1OrfIbrLm58TKlv2dTsnBLQ?pwdydby 提取码: ydby 下载后解压到当前文件夹 接下来需要把 g 的 bin 路径添加到系统环境变量的 Path 里 打开菜单栏的设置找到系统环境变量 进入环境变量的系统环境变量的Path路径 编辑添加 g 的 bin 路径 添加 然后确定
验证 g
g -v 可以看到 g 的版本号说明 g 环境配置成功
在桌面新建一个 code 文件夹 然后回到 VScode 打开刚刚的新建文件夹选择信任父级文件夹 点击第二个加号新建文件名为 .vscode(注意必须是这个名字) 然后分别再新建 四个文件文件名分别为
c_cpp_properties.json
launch.json
settings.json
tasks.json 然后分别为四个文件添加内容
c_cpp_properties.json
{configurations: [{name: Win64,includePath: [${workspaceFolder}/**],defines: [_DEBUG, UNICODE, _UNICODE],windowsSdkVersion: 10.0.18362.0,compilerPath: D:\VScode\MinGW-W64 GCC\mingw64\bin\g.exe,cStandard: c17,cppStandard: c17,intelliSenseMode: gcc-x64}],version: 4
}
但是要注意把
compilerPath 替换为刚刚配置的 g 路径
launch.json
{version: 0.2.0,configurations: [{name: (gdb) Launch, type: cppdbg, request: launch, program: ${fileDirname}\\${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false,cwd: ${workspaceRoot},environment: [],externalConsole: true, MIMode: gdb,miDebuggerPath: D:\VScode\MinGW-W64 GCC\mingw64\bin\g.exe,preLaunchTask: g,setupCommands: [{description: Enable pretty-printing for gdb,text: -enable-pretty-printing,ignoreFailures: true}]}]
}miDebuggerPath 路径也要替换为 g 配置路径
settings.json
{files.associations: {*.py: python,iostream: cpp,*.tcc: cpp,string: cpp,unordered_map: cpp,vector: cpp,ostream: cpp,new: cpp,typeinfo: cpp,deque: cpp,initializer_list: cpp,iosfwd: cpp,fstream: cpp,sstream: cpp,map: c,stdio.h: c,algorithm: cpp,atomic: cpp,bit: cpp,cctype: cpp,clocale: cpp,cmath: cpp,compare: cpp,concepts: cpp,cstddef: cpp,cstdint: cpp,cstdio: cpp,cstdlib: cpp,cstring: cpp,ctime: cpp,cwchar: cpp,exception: cpp,ios: cpp,istream: cpp,iterator: cpp,limits: cpp,memory: cpp,random: cpp,set: cpp,stack: cpp,stdexcept: cpp,streambuf: cpp,system_error: cpp,tuple: cpp,type_traits: cpp,utility: cpp,xfacet: cpp,xiosbase: cpp,xlocale: cpp,xlocinfo: cpp,xlocnum: cpp,xmemory: cpp,xstddef: cpp,xstring: cpp,xtr1common: cpp,xtree: cpp,xutility: cpp,stdlib.h: c,string.h: c},editor.suggest.snippetsPreventQuickSuggestions: false,aiXcoder.showTrayIcon: true
}tasks.json
{version: 2.0.0,tasks: [{label: g,command: g,args: [-g,${file},-o,${fileDirname}/${fileBasenameNoExtension}.exe],problemMatcher: {owner: cpp,fileLocation: [relative, ${workspaceRoot}],pattern: {regexp: ^(.*):(\\d):(\\d):\\s(warning|error):\\s(.*)$,file: 1,line: 2,column: 3,severity: 4,message: 5}},group: {kind: build,isDefault: true}}]
}
保存四个文件后就配置完成了。以后的C/C代码文件必须放在这个code文件夹里或者有 .vscode 文件夹的文件夹里面否则放其他文件夹会报错