【PHP入门教程】(超详细,第一篇)

【PHP入门教程】(超详细,第一篇) 前言这是《PHP入门教程》系列的第一篇。本篇我们将系统学习PHP的基石包括基础语法、流程控制与数组操作。欢迎大家来交流觉得不错可以三连订阅喔。目录一、PHP基础语法1.1 Web架构与PHP概述1.2 环境搭建1.3 基本语法1.4 常量1.5 数据类型1.6 运算符二、流程控制2.1 条件结构2.2 循环结构三、数组3.1 数组分类3.2 数组定义3.3 访问数组元素3.4 遍历数组3.5 数组运算符四、结尾一、PHP基础语法1.1 Web架构与PHP概述C/S架构客户端/服务器如LOL、绝地求生。B/S架构浏览器/服务器如4399。PHP主要用于开发B/S架构程序。PHP简介PHPHypertext Preprocessor是一种通用开源脚本语言。全球前100万网站中超过70%使用PHP开发常用于服务器端执行文件扩展名为.php。1.2 环境搭建开始学习之前还需要搭建PHP所需环境PHP环境Apache服务器。对于初学者而言建议使用集成工具集成工具中包含了 PHP、Apache服务器、Mysql数据库等服务,免去了繁琐的配置环境过程。常见的集成工具有很多WampServer、XAMPP、PHPStudy等,这里推荐使用PHPStudy下载地址小皮面板(phpstudy) - 让天下没有难配的服务器环境!下载安装步骤较简单根据提示来安装就好了安装好后启动小皮简易本地站点搭建步骤在phpStudy中“创建网站”。填写自定义域名如test.php.com并确保勾选“同步hosts”。在网站根目录如WWW/demo/创建PHP文件如hello.php。此时你可以打开浏览器访问该域名http://test.php.com\hello.php看看你所建立的本地网站吧可以从此开始你的前后端学习之旅。示例第一个PHP程序 (hello.php)?php echo hello world\r\n; print hello; ?修改代码后无需重启服务器刷新浏览器即可看到新内容。1.3 基本语法1. 标记PHP代码需包裹在标记内标准标记最常用。?php // PHP代码 ?2. 输出语句echo可输出一个或多个值用逗号分隔。print只能输出一个值。print_r()输出变量的易读信息适用于数组、对象。var_dump()输出变量的值和类型用于调试。示例?php $str Hello; echo $str, World; // 输出Hello World print $str; // 输出Hello $arr [1, 2, 3]; print_r($arr); // 输出Array ( [0] 1 [1] 2 [2] 3 ) var_dump($str); // 输出string(5) Hello ?3. 注释?php // 这是单行注释 (C风格) # 这也是单行注释 (Shell风格) /* 这是 多行注释 */ ?4. 标识符与变量标识符变量名、函数名等命名规则以字母或下划线开头由字母、数字、下划线组成区分大小写。变量以$开头是弱类型语言可直接赋值。示例?php $name 张三; // 合法 $_age 20; // 合法 // $98k 100; // 非法数字不能开头 ?5. 变量赋值传值赋值拷贝值两个变量独立。引用赋值使用两个变量指向同一数据空间。示例?php $a 10; $b $a; // 传值赋值 $c $a; // 引用赋值 $c 99; echo $a; // 输出99 ($a被$c修改) echo $b; // 输出10 ($b保持不变) ?1.4 常量常量一旦定义值不可更改。习惯上用大写字母命名。定义方式?php // define() 函数定义 define(PI, 3.14); echo PI; // 输出3.14 define(SITE_NAME, MySite, true); // 第三个参数true表示不区分大小写 echo site_name; // 输出MySite // const 关键字定义 const R 6; const P 2 * R; echo P; // 输出12 ?预定义常量?php echo __FILE__; // 当前文件完整路径 echo __LINE__; // 当前行号 echo PHP_VERSION; // PHP版本 ?1.5 数据类型PHP主要数据类型分为三类标量类型、复合类型、特殊类型。1. 标量类型布尔型 (boolean)true或false。整型 (integer)十进制、八进制以0开头、十六进制以0x开头。浮点型 (float)带小数的数字。字符串 (string)单引号、双引号、定界符。示例?php $bool true; $int 100; // 十进制 $int2 012; // 八进制等于十进制的10 $int3 0xA; // 十六进制等于十进制的10 $float 10.5; $str1 单引号字符串变量$int不会解析; $str2 双引号字符串变量$int会解析为100; echo $str2; ?2. 单引号与双引号区别单引号内容完全原样输出不解析变量和大多数转义字符除\\和\。双引号解析变量和丰富的转义字符如\n,\t。示例?php $lang PHP; echo I like $lang; // 输出I like $lang echo I like $lang; // 输出I like PHP ?3. 字符串连接使用点号.连接字符串。?php $str1 Hello; $str2 World; $str3 $str1 . . $str2; // 结果Hello World $str1 . PHP; // 等价于 $str1 $str1 . PHP; echo $str1; // 输出Hello PHP ?4. 特殊类型NULL表示变量没有值。以下情况变量被认为是NULL被赋值为NULL。尚未被赋值。被unset()。示例?php $a null; $b; var_dump($a); // NULL var_dump($b); // NULL (并产生通知) ?5. 数据类型检测gettype()返回数据类型字符串。is_*()系列函数返回布尔值如is_int(),is_string()。示例?php $var 100; echo gettype($var); // 输出integer var_dump(is_int($var)); // 输出bool(true) ?6. 数据类型转换自动转换运算时根据上下文自动转换。强制转换在变量前加上(目标类型)。示例?php $num 10 apples; $sum (int)$num 5; // 强制转换为整型10结果为15 echo $sum; ?1.6 运算符1. 算术运算符?php echo 5 3; // 8 echo 5 - 3; // 2 echo 5 * 3; // 15 echo 5 / 2; // 2.5 echo 5 % 2; // 1 (取模) echo 2 ** 3; // 8 (幂运算PHP 5.6) ?2. 比较运算符用于比较两个值返回布尔值。?php $a 5; $b 5; var_dump($a $b); // true (值相等) var_dump($a $b); // false (值和类型都不等) var_dump($a ! $b); // false var_dump($a ! $b); // true ?3. 逻辑运算符用于组合条件。?php $x true; $y false; var_dump($x $y); // false (与) var_dump($x || $y); // true (或) var_dump(!$x); // false (非) var_dump($x xor $y); // true (异或一真一假为真) ?4. 三元运算符(expr1) ? (expr2) : (expr3)如果expr1为true返回expr2否则返回expr3。PHP 5.3支持省略中间部分的简写。?php $age 20; $status ($age 18) ? 成年 : 未成年; echo $status; // 输出成年 // 简写形式 $username $_GET[user] ?: nobody; // 如果$_GET[user]存在且不为空则使用它否则为nobody ?二、流程控制2.1 条件结构1. if 语句?php $age 20; if ($age 18) { echo 您已成年; } ?2. if...else 语句?php $age 16; if ($age 18) { echo 您已成年; } else { echo 您未成年; } // 使用三目运算符实现同样功能 echo ($age 18) ? 您已成年 : 您未成年; ?3. if...elseif...else 语句?php $score 85; if ($score 90) { echo 优秀; } elseif ($score 80) { echo 良好; } elseif ($score 70) { echo 中等; } elseif ($score 60) { echo 及格; } else { echo 不及格; } ?4. switch 语句适用于对同一个表达式进行多种值匹配。?php $day 3; switch ($day) { case 1: echo 星期一; break; // 必须用break跳出否则会继续执行后面的case case 2: echo 星期二; break; case 3: echo 星期三; break; default: // 以上都不匹配时执行 echo 不是工作日; } ?2.2 循环结构1. while 循环先判断条件再执行循环体。?php $i 1; while ($i 5) { echo 数字是$i br; $i; } ?2. do...while 循环先执行一次循环体再判断条件。?php $i 1; do { echo 数字是$i br; $i; } while ($i 5); ?3. for 循环适合循环次数已知的情况。?php // 计算1到100的和 $sum 0; for ($i 1; $i 100; $i) { $sum $i; // $sum $sum $i } echo 1到100的和是$sum; // 求1到100的偶数和 $evenSum 0; for ($i 0; $i 100; $i 2) { $evenSum $i; } echo 1到100的偶数和是$evenSum; ?4. 跳转语句break终止当前循环或switch结构。continue跳过本次循环剩余代码开始下一次循环。?php // break示例找到第一个大于10的数就停止 for ($i 0; $i 20; $i) { if ($i 10) { echo 找到的数$i; break; } } // continue示例只输出奇数 for ($i 0; $i 10; $i) { if ($i % 2 0) { continue; // 如果是偶数跳过本次循环 } echo $i ; // 输出1 3 5 7 9 } ?三、数组数组是用于在单个变量中存储多个值的特殊变量。3.1 数组分类索引数组键名为整数的数组默认从0开始。关联数组键名为字符串的数组键值对之间有明确的逻辑关系。3.2 数组定义1. array() 语法?php // 索引数组省略键名 $fruits array(apple, banana, orange); // 索引数组指定键名 $sports array(2 basketball, 5 swimming); // 关联数组 $person array(name 张三, age 20, city 北京); ?2. 短数组语法[](PHP 5.4)?php // 等价于上面的定义 $fruits [apple, banana, orange]; $person [name 张三, age 20, city 北京]; // 混合数组 $mixed [1, hello, id 5, 9 world]; ?3.3 访问数组元素?php $cars [Volvo, BMW, Toyota]; echo $cars[0]; // 输出Volvo echo $cars[1]; // 输出BMW $age [Peter35, Ben37, Joe43]; echo Peter is . $age[Peter] . years old.; // 输出Peter is 35 years old. // 查看整个数组调试用 echo pre; print_r($cars); var_dump($age); echo /pre; ?3.4 遍历数组1. for 循环遍历索引数组?php $cars [Volvo, BMW, Toyota]; $arrlength count($cars); // count()函数获取数组长度 for($x 0; $x $arrlength; $x) { echo $cars[$x] . br; } ?2. foreach 循环遍历数组最常用?php // 遍历索引数组只取值 $colors [red, green, blue]; foreach ($colors as $value) { echo $value br; } // 遍历关联数组取键和值 $age [Peter35, Ben37, Joe43]; foreach ($age as $key $value) { echo Key . $key . , Value . $value . br; } ?3. 示例计算数组元素和?php $numbers [10, 20, 30, 40]; $sum 0; foreach ($numbers as $num) { $sum $num; } echo 数组元素之和为$sum; // 输出100 ?3.5 数组运算符运算符用于合并数组。如果键名冲突则保留第一个数组的值。?php $a [a apple, b banana]; $b [a pear, b strawberry, c cherry]; $c $a $b; // 合并$a和$b echo pre; print_r($c); /* 输出 Array ( [a] apple // 来自$a [b] banana // 来自$a [c] cherry // 来自$b ) */ echo /pre; ?四、结尾至此我们已经完成了PHP核心基础的学习。从环境搭建、变量常量、数据类型、运算符到控制程序逻辑的流程控制语句再到存储和管理数据的数组这些都是构建任何PHP应用的必备“砖瓦”。掌握了这些你已经具备了编写具有逻辑功能的脚本的能力。在下一篇即本系列最后一篇我们将进入更激动人心的实战阶段学习如何用函数封装代码用面向对象的思想组织程序运用丰富的内置函数高效处理数据并最终理解HTTP协议与表单实现真正的浏览器与服务器动态交互。敬请期待