PHP & MySQL learning notes (2)
-基础笔记-
慕课网 PHP 基础语法巩固(2) 课堂笔记,包含基本语法,变量和数据和函数等细碎的摘要
PHP 使用环境和 IDE
- LAMP(build): Linux+Apache+MySQL+PHP
- LNMP: Linux+Nginx+MySQL+PHP
- LNMPA: Linux+Nginx+MySQL+PHP+Apache
- WAMP(build): Window+Apache+MySQL+PHP
- 集成环境: xampp, wampserver, phpstudy
- IDE: vscode,Atom, Sublime Text3, PHPStorm, ZendStudio
基础语法
标准风格:
<?php 代码段; ?>
如果文档中只有 PHP 代码,结束标记要省略掉
如果文档中不只有 PHP 代码,一定要保证 PHP 的开始和结束标记成对出现,可以出现任意位置,任意多次都可以短风格:
<? 代码段; ?>
需要配置 PHP 配置文件 php.ini 中 short_open_tag=On,重启 Apache 服务器即可ASP 风格:
<% 代码段; %>
需要配置 PHP 配置文件 php.ini 中 asp_tags=On,重启 Apache 服务器即可
常量 & 变量
定义常量
- define($name, $value)
- const NAME=值
</br>
常量名称不加$
常量名称最好大写,以字母或者下划线开始
常量默认区分大小写
常量作用域是全局
常量一经定义,在脚本执行期间是不能改变的
常量的值可以是标量类型,也可以是数组
</br>
- constant($name) //根据常量的名称获取常量的值 |
魔术常量
__LINE__
//得到当前的行号__FILE__
//得到当前文件的完整绝对路径和文件名__DIR__
//得到文件的完整绝对路径__FUNCTION__
//得到当前函数的名称__CLASS__
//得到当前类的类名__METHOD__
//得到当前类的方法名称__TRAIT__
//得到当前的 TRAIT 名称__NAMESPACE__
//得到当前明明空间的名称
定义变量
- 通过美元$变量名称来表示变量
- PHP 是弱类型语言,可以声明变量在使用,也可以不声明,可以一次声明一个,也可以一次声明多个
变量命名法
驼峰标记法
小骆驼: firstName,lastName,zendControllerFront
大骆驼: irstName,LastName,ZendControllerFront下划线法
first_name,last_name,zend_controller_front
预定义变量
$GLOBALS
//超全局变量,包含以下所有的预定义变量$_SERVERS
//服务器和执行环境信息变量$_ENV
//环境变量$_COOKIE
//HTTP Cookies$_SESSION
//HTTP Session 变量$_FILES
//文件上传信息变量$_GET['名称']
//主要接收以?形式传递的数据,像表单以 get 形式发送数据,包括像超链接典型的?形式传递参数$_POST['名称']
//主要接收表单以 post 形式发送的数据$_REQUEST
//$_GET+$_POST+$_COOKIE
数据类型 & 转换
临时转换
整型: (int)$变量名称|(integer)$变量名称
浮点型: (float|double|real)$变量名称
字符型: (string)$变量名称
布尔型: (bool|boolean)$变量名称
空: (unset)$变量名称
数组: (array)$变量名称
对象: (object)$变量名称
通过系统函数实现
intval($var) //返回变量转换成整型之后的值
floatval($var)|doubleval($var) //返回变量转换成浮点型的值
strval($var) //返回变量转换成字符串的值
boolval($var) //返回变量转换成布尔类型的值
永久转换
settype($var,$type) //设置变量的类型
gettype($var) //返回变量的类型
函数
函数变量
局部变量
- 局部动态变量: 变量只在函数内部执行,执行完毕则被销毁
- 局部静态变量: 在函数内部设置 static 时,执行完毕变量不被销毁
全局变量: 使用 global,在函数内部定义全局变量,当函数执行时先调用函数外面已经定义好的变量再执行,如函数内部有重复定义相同变量不同值,执行出的是函数内部修改过的值
参数传递
- 值传递: 在函数内部修改变量的值的情况下,在函数调用时调用函数外部的变量,值不变
引用传递: 在函数内部修改变量的值的情况下,在函数调用时,函数的参数前面加一个&符号,值发生改变
在对象中,不加&符号,对象的值也会发生改变
堆内存: 存放占用内存比较大的,如对象 new xxx()
栈内存: 存放基本类型 $obj
可变参数列表
func_num_args:实参个数;
func_get_arg:返回某一个实参,必须事实参数组的索引;
func_get_args:返回实参数组;
可以返回整型,字符串型,数组等数据类型
复杂函数类型
可变函数:通过变量改变函数的名字并调用,让函数的调用更具有多样性
匿名函数:
使用变量 = function(){}; ,调用时也是用变量加小括号来进行调用,变量后面要加上分号结尾
声明一个函数不给函数起名字,用来以后做回调函数时用
嵌套函数访问外部局部变量:变量名 1 = function() use ($变量名 2){};
系统库函数
int strlen(string $str) //返回字符串长度 |
数组
创建数组
- 通过 array()形式
array()空数组
array(值,…)下标连续的索引数组,下标从 0 开始
array(键名=>键值,…)指定下标的索引数组、关联数组、混合数组
通过[]的形式定义数组,代替 array()
- 通过[ ]动态创建
$数组名称[]=值 //下标连续的索引数组 |
- 通过 range()和 compact()快速创建
range() //快速创建下标连续的索引数组
compact() //快速创建关联数组,只能写已经存在的变量名称,不能加$
- 通过 define(), const 定义常量数组
数组转换
临时转换: (array)$var
永久转换: settype($var,$type)
数组运算符
+
合并数组,如果键名相同,使用前面数组的键值==
只比较键名和键值是否相同,如果相同返回 true,否则返回 false===
既要比较键名和键值是否相同,还要比较类型和顺序
数组遍历
通过 foreach 遍历数组
foreach($数组名称 as $val){循环体;} //只要键值 |
可以通过:和 endforeach 代替{ }
PHP7 中 foreach 的改变
- foreach 遍历对数组内部指针不再起作用
- 按照值进行遍历的时候,foreach 操作的值是数组的副本
- 按照引用进行遍历的时候,有更好的迭代特性,在遍历体内修改数组对遍历有影响
通过指针函数遍历
key($array) //得到当前指针所在位置的键名
current($array) //得到当前指针所在位置的键值
next($array) //将数组指针向下移动一位,返回当前指针所在位置的键值,否则返回false
prev($array) //将数组指针向上移动一位,返回当前指针所在位置的键值,否则返回 false
end($array) //将数组指针移动到末尾,返回当前指针所在位置的键值,否则返回false
reset($array) //将数组指针移动到开始,返回当前指针所在位置的键值,否则返回 false
通过 each()和 list()函数遍历数组
each()
list()
数组库 API
创建数组操作
range($min,$max[,$step=1]):快速创建下标连续的索引数组 |
键值相关操作
count($var[,$mode=COUNT_NORMAL])/sizeof():计算数组中的单元数目或对象中的属性个数 |
数组指针函数
key($array):得到当前指针所在位置元素的键名 |
数组的排序函数
sort($array[,$sort_flag=SORT_REGULAR]):对数组的键值按照升序排列,不保留键名 |
数组的交集与差集
array_diff($array1,$array2[...]):计算数组的差集 |
数组的拆分与合并
array_slice($array,$offset[$length=null[,$preserve_keys=false]]):截取数组 |
错误及常用命令
- Parse error(解析错误): syntax error(语法错误), unexpected ‘<’, expecting end of file
- Notice(通知): Undefined variable(未定义的变量): sdkljflskdjflksdjflksdjfklj
- Catchable fatal(致命) error: Object of class stdClass could not be converted to string
- Warning(警告): settype(): Invalid(非法) type
</br>
header('content-type:text/html;charset=utf-8'); |
- 本文链接:https://hyqskevin.github.io/2018/11/05/php-notes/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!