Hom's Blog


PHP学习笔记-基础语法篇

周末, 冲杯咖啡, 好好看看PHP玩玩. :)

基础知识

  • PHP就是HTML基础上插入php语句块的语言.直观变为html.所以PHP输出时经常要带标签,
    ,&nbsp一类.
  • <?php ....?> PHP语法代码块.会被翻译处理后成HTML处理.
  • 必须语句分隔符:;,除了最后一句,基本是必须的,因为PHP是HTML类似的紧凑型的排版.单独一个;可以代替空语句.
  • 三种注释: //以及#行注释,/*...*/块注释.
  • PHP对类名,函数,关键词大小写不敏感,但是对变量名敏感.
  • 宽松型语法,经常有多表达支持.例如数组元素$arr[n],$arr{n}都可以.
  • 语法有点bash和现代类c语言的混杂..
  • 输出大于和小于号请用&gt&lt.
  • include fname可以插入某文件内容,例如样式,php脚本等.require fname有相同功效. 前者在出错后脚本继续运行,后者则出错后就终止运行.
  • exec( string $command [, array &$output [, int &$return_var ]] ) 执行外部命令,返回输出的最后一行.
  • die(n)/exit(n) 退出脚本.返回n.0是正常结束,1-254可用作非正常结束.如果n是字符串则在退出前输出字符串.

数据类型,变量,运算比较等基础元素

  • 宽松的类型, 所以不需要声明变量类型.
    • 字符串: 字符串用".."(变量翻译)或'..'(变量保持原表示). 串接用., 支持$str.=$str2追加. 字符串函数请参考Ref2.
    • 整型int(支持10进,0xFF 十六进和 033 八进)和浮点float.
    • 逻辑bool,就是true false.
    • NULL型 null,可以清空变量,不同于""空串.
    • object对象型和array数组型.
  • 变量赋值(定义同时赋值):$varname=value.变量分global(只能函数外调用,函数内调用不能,这点和别的不太一样),local(函数内)和static(需要额外用关键词声明,生命期长local,一直存在).函数内调用函数外变量: global $var声明 或者$GLOBAL['var'] (全局变量数组).
  • unset($var) 注销变量或数组,不能注销常量.
  • 常量调用直接用名字,如M_PI.是全局的不能变不能撤销的.用define(name,value,大小写敏感不)定义.
  • 超全局变量: 可以在全部作用域使用的内置变量,PHP和网页的关键. 参见Ref3.

  • $i++,++$i支持,$i+= 支持. 支持+-*/%. 赋值=.字符串有..=.
  • 比较:<,>,<=,>=,!=,==,和JS类似,有===,!==需要类型相等/不等的全等/全不等. 还支持<> 就是!=.
  • && and,或|| or,非!. 支持xor异或, 不支持not.

数组,列表,结构一类数据结构

  • 数组(索引数组): $var=array(1,2,3), 调用时索引从0开始,用$var[n]调用,也支持用$var{n}调用.可以用unset($var[n]删掉某个元素(不影响后面),也可以整个数组unset($arr).
    • 数组运算: +两个数组合并,相同项保持前一数组的值而不覆盖; 支持==,!=,<>,===,!==判断.
  • 关联数组(类似字典): $var=array("name"=>value, ...) 本质是特殊的数组,用=>去映射.
  • 多维数组: $var=array(array(),array()...); 调用$var[n1][n2],n1是最外层的.

控制循环函数

控制

  • if (条件表达式){;} elseif(条件){;};else{;} C型if
  • switch($var){case value:..;break;...default:...;} 和一般的类似,没有break会一起执行.
    • switch($var): case语句 ; endswitch; 另一种表达的语法糖..蛋疼.

循环

  • for($i=1;$i<10;$i=$i+1){...;} C型for
  • foreach ($array as $var){;} 数组用循环,循环变量在as后面.
    • 对于字典,有 foreach ($dicname as $indexname=>$value)来获取.
  • while(条件){..;} 另一种表达: while(): ....; endwhile;
  • do{....;} while(条件);

函数

  • function name($var1,$var2=2) {statement;[return val/var];} 函数名大小写不敏感. 支持默认参数.
  • funcname($var,val) 调用函数. 函数调用可以在函数定义位置之前(即函数定义可以在下方).

对象

  • class classname {public $element; private function(){}; }
    • $var=new Classname(); 创建对象,会调用构造函数.
    • 调用属性或函数用->. $var->name, $var->func(). 注意属性不再要$name.
    • $this 对象自身.
    • 常量属性用const 声明, 用::调用. 常量调用或定义不用$在前面! 没有对象都可以调用类里的常量(用::). const不能和public共存.
    • 静态属性用static 声明, 用类名::属性/方法调用.
  • function __contruct(){} 构造函数
  • class newclass extends oldclass{} 继承.
    • 重新声明同样名字的属性/方法对母类进行覆盖. 不想被覆盖, 就在母类里在public前面声明final.

操作文件

  • readfile(fname); 直接读取文件直接输出出来. 返回字节数,若echo会追加在文件内容输出后.
  • fopen(fname,"r"): 打开文件并操作.第二选项是模式,包括r,w,a,x,r+,w+,a+,x+a是追加,x是创建新文件若存在返回false,+是读/写. 一般$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
  • fclose(fname): 关闭文件.
  • fread(fname,maxsize): 打开文件读取,最大读取字节数maxsize.
  • filesize(fname): 返回文件大小(byte).
  • fgets(fname): 读取一行,文件指针移到下一行行头.
  • fgetc(fname): 读取单字符.
  • feof(fname): 判断是否读到文件末尾.如while(!feof($myfile)) {echo fgets($myfile) . "<br>";}
  • fwrite(fname,str): 向文件写入内容.
  • file_exists(path): 检查指定位置的文件[夹]是否存在.
  • move_uploaded_file(file,newloc): 移动上传文件到指定位置.上传文件是个临时名字,会被最终销毁. 若文件不合法或无法移动,则返回false.
  • getcwd() 获得当前工作目录
  • 更多请参考Ref6.

常用命令

// 一般函数
echo "str"/$var/("str")/$var,$var2; //直接输出,无返回,可多个(用,)一起输出.{$var}的大括号不输出,整体性.
print "str"/$var/("str") //也是直接输出,只能输出一个字符串,返回1.
var_dump($var) //返回:数据类型(值). object(class),string(n),array(n),int,float,bool,NULL等. n是长度.数组按联合数组形式输出.
define(name,value,大小写敏感不) //定义常量.name是个字符串.大小写敏感不默认false.
defined(name) //是否已定义常量,返回对错
phpinfo(); //返回php的有关信息,包括各种设置
parse_url(url);//分析网址,返回scheme(http),host(主机或ip),path(主机后路径)

// 字符串函数
strlen(str) //字符串长
substr(str,start,length) //从第几位开始获取长度length子串,start是从0开始算的.
strtoupper(str),strtolower(str) //大写化和小写化.
strpos(str,substr) //返回匹配子串第一个位置.没有返回false.
htmlspecialchars(str) //能够将字符串转为HTML实体如 &lt, 避免被黑客利用而攻击.
trim(str,charlist)  //去除字符串两端空白字符或预定义字符. 默认删掉空白,回车,tab等.
stripslashes(string) //删除添加的反斜杠.常用来对表单/数据库取回的数据进行处理.
empty(str) //是否为空,返回是否.

// 数学函数
round(var[,n]) //四舍五入, n可以指明四舍五入后变成n位小数.
rand([min,max]) //从min到max的随机整数,不输入默认0~32767. rand(0,1); 随机出数0/1.

// 数组函数
array_push(array,value); //推入元素到数组
count(array) //返回数组元素数量
sort(array) //索引数组从小到大升序排序,会改变数组顺序.
rsort(array) //降序排序
asort(array) //关联数组按值升序排序
arsort(array) // 关联数组按值降序排序
ksort(array) // 关联数组按键升序排序
krsort(array) // 关联数组按键降序排序

join('sub',array) //用sub串连接数组各个元素.

// 对象相关函数
class_exists('className') //判断是否存在(定义)该类
is_a($var, "ClassName") //是否该对象属于该类.
property_exists($var,"pro")  //是否有该属性
method_exists($var,"methodname") //是否有该方法

// 内建常量
M_PI //内建常量,不用`$`调用,3.14.

IDE

Reference

  1. W3School-PHP
  2. 字符串参考手册
  3. 超全局变量
  4. 数学函数和常量参考手册
  5. 数组相关函数参考手册
  6. 文件系统参考手册
  7. 官方文档-中文,英文
  8. 目录相关
  9. 杂项相关


◆ 本文地址: http://platinhom.github.io/2015/06/29/PHP-study/, 转载请注明 ◆

前一篇: 剪贴板的命令行/代码操作
后一篇: 搭建本地服务器


Contact: Hom / 已阅读()
Source 类别: Coding  标签: PHP  Key