PHP基本语法结构
每次打开一个PHP文件,我总能看到熟悉的<?php ?>
这对标签。它们就像PHP世界的魔法大门,所有代码都要乖乖待在里面才能生效。记得刚开始学的时候,我总忘记写闭标签,结果页面直接显示源代码,那场面简直像个技术小白在裸奔。
注释在代码里就像给自己留的小纸条。单行注释用//
或#
,多行注释用/* */
包裹。有次我调试代码时把关键部分注释掉了,结果找了半天bug,最后发现是自己坑了自己。写注释是个好习惯,但千万别像我这样手滑啊!
PHP变量与常量
看到变量前面那个美元符号$
了吗?这就是PHP变量的标志。起名要遵守规则:不能以数字开头,区分大小写。有次我写$userName
和$username
当成同一个变量用,结果程序死活不按预期运行,这种低级错误真是让人哭笑不得。
常量用define
定义后就不能改了,像被施了定身法。我特别喜欢用它来存配置信息,比如数据库连接参数。不过要小心,常量一旦定义就像结婚誓言,想反悔可没那么容易。变量就灵活多了,想怎么变就怎么变,典型的善变性格。
PHP运算符与表达式
PHP的运算符就像数学课上的老朋友,加减乘除(+ - * /
)一个不少。赋值运算符=
让我想起小时候的等号,但这里的等号更像是个快递员,把右边的值送到左边去。比较运算符==
和===
这对双胞胎最让人头疼,前者只看值,后者连类型都要管,简直是个细节控。
逻辑运算符&&
和||
就像生活中的"并且"和"或者"。写条件判断时我经常把它们搞混,结果程序逻辑全乱套了。现在学乖了,不确定的时候就加括号,反正括号多了不压身,总比逻辑出错强。
PHP数据类型详解
PHP的数据类型就像超市里的商品分类。字符串可以用单引号、双引号包裹,双引号里的变量会自动替换,这个特性简直不要太方便。整型和浮点型处理数字,但千万别把它们混为一谈,就像不能把整数当小数用一样。
布尔型就两个值:true
和false
,非黑即白,没有灰色地带。数组像个百宝箱,什么都能往里装。对象则是面向对象编程的主角,每个对象都有自己的属性和方法。NULL这个特殊类型表示"什么都没有",有时候比有值更能说明问题。
记得刚学数据类型转换时,我把字符串'123'和数字123相加,PHP自动做了类型转换,当时觉得这语言真智能。后来遇到'abc'+123得到0的情况才明白,这种自动转换有时候也是个甜蜜的陷阱。
条件语句与循环结构
写代码就像做决策,if语句就是我的思考过程。"如果今天下雨,我就带伞"——这种日常逻辑在PHP里写成if($isRaining){ $takeUmbrella = true; }
。else就像是plan B,当条件不满足时的备选方案。有次我忘了写else,结果程序在错误情况下继续执行,那场面就像下雨天没带伞还硬着头皮出门。
switch语句像选择题的答题卡,根据不同的选项执行不同代码块。我特别喜欢用它处理多个固定选项的情况,比一长串if-else清爽多了。不过要记得每个case后面加break,不然会像多米诺骨牌一样一直执行下去,这个坑我踩过不止一次。
循环结构让重复劳动变得简单。while循环像固执的小孩,"条件满足就一直做";do-while则是"先做一次再说"的实践派。for循环把初始化、条件判断和计数器变化都放在一行,特别适合知道要循环多少次的情况。foreach专门对付数组,像自动售货机一样把数组元素一个个吐出来。
PHP函数的定义与使用
函数就像代码里的瑞士军刀,把常用功能打包好随时调用。定义函数用function sayHello($name){ return "Hello ".$name; }
,调用时写echo sayHello("World")
就能看到亲切的问候。有次我函数名写错了大小写,结果调用时死活找不到,PHP对函数名可是大小写不敏感的,这点和变量不一样。
参数让函数更灵活,可以传入不同值得到不同结果。返回值则是函数的"回信",把处理结果带出来。我刚开始总忘记写return,结果函数执行完什么都没留下,像去超市忘了拿找零。现在养成了习惯,定义函数先想好要接收什么参数,最后返回什么值。
函数内部变量和外部是隔离的,这种设计避免了命名冲突。不过用global关键字可以让函数访问外部变量,就像给函数开了个后门。静态变量static能在函数调用间保持值,像是函数的私人记事本。可变函数这个特性很有趣,把函数名存在变量里,通过变量来调用,这招在需要动态调用时特别管用。
PHP数组操作与应用
PHP数组就像万能收纳盒,能装下各种类型的数据。索引数组用数字做键,像图书馆的编号系统;关联数组用字符串做键,更像字典的检索方式。定义数组可以用老式的array(),也可以用简洁的[],我更喜欢后者,写起来快多了。
遍历数组是家常便饭,foreach是最趁手的工具。有时候需要知道数组长度,count()函数就是尺子。in_array()检查元素是否存在,array_push()往末尾添加元素,这些函数用熟了就像玩俄罗斯方块一样顺手。array_merge()合并数组时要注意键名冲突,有次我合并后数据被覆盖了,排查半天才发现是键名重复惹的祸。
多维数组像套娃,数组里还能装数组。处理这种结构时要小心层级,我经常用print_r()打印出来看结构。数组排序函数很多,sort()、asort()、ksort()各有各的排序规则,用错的话数据顺序就乱套了。array_map()可以对每个元素应用函数处理,这种批量操作特别省事。
基础文件操作
文件操作就像和电脑的文件系统对话。fopen()是敲门,fread()是阅读内容,fclose()是礼貌告别。记得有次我忘了关闭文件,结果其他程序无法访问那个文件,这种资源泄漏问题要特别注意。file_get_contents()能一次性读取整个文件,适合处理小文件,大文件还是得用流式读取。
写文件用fwrite(),就像往笔记本上记录。file_put_contents()更简单粗暴,直接覆盖写入。修改文件要先确定权限,有次我遇到权限不足报错,才意识到不是所有文件都能随便改的。文件检测函数很实用,file_exists()检查存在性,is_readable()检查可读性,is_writable()检查可写性,这些检查能让代码更健壮。
目录操作和文件操作类似,mkdir()创建目录,rmdir()删除空目录。扫描目录用scandir(),返回的文件列表包含"."和".."这两个特殊条目,处理时记得过滤掉。realpath()能把相对路径转绝对路径,在处理文件路径时特别有用,避免了一堆../带来的混乱。
标签: #PHP基础语法入门 #PHP变量与常量 #PHP运算符与表达式 #PHP数据类型详解 #PHP函数与数组操作