PHP基础语法(一)
来源:互联网 发布:java mission control 编辑:程序博客网 时间:2024/05/18 01:49
- 前瞻知识点
- hello world
- PHP简介
- 语言基础
- 输出时间
- 变量
- 特点
- 变量命名规则
- 变量的声明与赋值
- 变量值的读取
- 变量相关函数
- 可变变量
- 变量的值传递和引用传递
- 常量
- 概念
- 命名规则
- 常量定义define
- 魔术常量
- 数据类型
- 整型
- 浮点型
- 字符串
- 布尔型
- 空型
- 数据类型转换
- 运算符
- 流程控制
- 数组
- 概念
- PHP中数组的分类
- 数组的创建
- 多维数组
- 数组中的函数
- 数组的遍历
- PHP中的数组传值时为值传递
- 函数
- 概念
- 定义函数的方式
- 函数的调用
- 函数参数的传递
- 函数可变数量参数
- 函数的返回值
- 常用系统函数
- 字符串
- 数学
- 日期
前瞻知识点
- B/S结构的处理流程
- 网络基本概念
- IP
- 域名
- DNS
- 网络DNS
- 本地DNS
- 端口
- 安装WAMP环境
- W – web, A – Apache , M – MySql ,P – PHP
hello world
所有PHP代码都放在标记:
PHP简介
- PHP Hypertext Preprocessor 超文本预处理器,是嵌入到HTML文件中的服务器端的脚本语言;
- 一个PHP文件中,可以包含多种代码:HTML、CSS、JS、Jquery、PHP、MySQL等
- PHP的语法,与C、Java、Python、JS语法比较相似;
- PHP是服务器端的脚本语言,脚本语言相对编程语言来说,要简单的多。
- PHP程序只能运行在服务器端,在客户端看不见PHP任何代码;
- PHP文件的扩展名是以.php为后缀的。
语言基础
- PHP与ASP、JSP一样,都是嵌入到HTML文件中的服务器端的脚本语言;
- PHP文件的后缀是.php
- PHP代码的标记:
输出时间
echo date('Y-m-d H:i:s');
默认情况下PHP输出的时间是格林威治时间,比中国时区晚8个小时
解决方案:
1.0 找到PHP的配置文件 php.ini
2.0 定位到 date.timezone
3.0 设置中国时区
; PRC为中华人民共和国 date.timezone = PRC
变量
特点
- 变量是临时存储数据的容器;
- 变量是存储在内存当中;
- 网页执行完毕后,网页中相关的变量全部消失。
变量命名规则
- 变量名称只能包含:字母、数字、下划线
- PHP中的变量名必须以 “$” 符号开头,但是”$”符号不属于变量的一部分,将来不管是赋值还是取值,都必须加上”$”
- 变量名区分大小写
- PHP中的变量使用不需要声明,直接赋值使用
- 常用的两种命名方法:
- 驼峰命名法
- 第一个单词的首字母小写,其余单词的首字母全部大写
- 如:userName,userId
- 帕斯卡命名法:
- 与驼峰命名法很像
- 唯一区别是它的首字母是大写
- 如:UserName,UserId
- 下划线命名法
- 所以的单词首字都小写,由下划线连接
- 如:user_name,user_id
变量的声明与赋值
- 声明
- PHP中变量不需要声明,但是每个变量必须以$开
- 赋值:
- 直接给带有$的变量赋值
- 使用“=”,赋值运算符给变量赋值,“=”读作赋值运算符
- 赋值运算符的左边只能是一个变量名
- 如:$userName = “张三”;
变量值的读取
变量的数据类型由其中的内容决定
直接以 “$+变量名”的方式 取得可以取得变量的值
$userName = "admin";
可以使用“.”来连接将变量与字符串一起输出
echo "我的名字叫".$userName
也可以在字符串的内部直接使用变量
- 在PHP中“.”点表示相连
- 在PHP中“+”加表示相加(是一种算术运算符)
echo "我的名字叫做$userName"但是,如果用引号时,变量后面还有其它的有文字,就不能解析了如echo "我的名字叫做$userName很高兴见到大家"这里就无法解析,需要在变量后面添加一个非空特殊字符,如:echo "我的名字叫做{$userNmae}很高兴见到大家"如果输出字符是单引号,则无法解析字符串
变量相关函数
header():设置服务器返回到浏览器的数据的类型
header('content-type:text/html;charset=utf-8');
isset() 判断变量是否存在
- 可以用来判断变量是否定义,或者是否为null
empty() 判断变量是否为空
- 如果
var
是非空或非零的值,则 empty() 返回 FALSE - “”、0、“0”、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,也就意味着,如果上述的数据用empty来判断返回的结果都为true
- 如果
unset() 删除变量
可以通过这个函数删除一个已经存在的变量,删除之后变量为null
可以同步删除多个变量
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。(这个当我们学了全局变量与局部变量以后再说)
unset($a,$b,$c)
var_dump() 显示变量的类型和值
- 可以同时打印多个变量
print_r() 显示数组的元素信息
- 如果是字符串,数字,boolean值,会原样输出
- 如果是数组,会详细打印数组信息
可变变量
指一个变量的名称,由另一个变量的值来充当
$a = "b";$b = "c";echo $b;//输出 cecho $$a;//输出 c
如果使用可变变量,一定要加上给可变变量的变量名加上{}作为定界符
变量的值传递和引用传递
JS中的基本数据类型(只有一个值):字符串型、数值型、布尔型、undefined、null
JS中的复合数据类型(多个值):数组(Array)、对象(Object)、函数(Function)
值传递:
- 传递的是变量中保存的值
引用传递
- 传递的是变量保存的引用地址
在PHP中可以使用 & 符号将值传递的变量改变为引用传递:如
$a = "abc";$b = &$a;$a = "123";echo "$a<br/>$b"
常量
概念
- 常量就是值永远不变的量,即:一旦赋值无法删除,修改。
- 由于变量在使用时还需要去它存储的地址中去找到对应的数据,相比变量来说,常量的速度要快。
命名规则
- 与变量基本一致
- 变量名称只能包含:字母、数字、下划线,常量也是
- PHP中的常量不需要使用$符号开头
- 常量名区分大小写,一般建议使用时尽量用大写,为了与变量区分开
- 常用的两种命名方法:
- 驼峰命名法
- 第一个单词的首字母小写,其余单词的首字母全部大写
- 如:uerName,userId
- 下划线命名法
- 所以的单词首字都小写,由下划线连接
- 如:user_name,user_id
常量定义define()
语法: bool define ( string
name,mixed value [, bool $case_insensitive = false ] )案子:通过define关键来定义
define('TITLE',"中华人民共和国");//定义常量TITLEdefine('TITLE',"中华人民共和国",true);//加上true,使用时既可以使用TITLE,又可以使用小写title,来使用常量define('TITLE',"中华人民共和国",false);//加上false,使用时必须使用TITLE
判断是否是常量:defined()
语法: bool defined ( string $name )
defined()可以判断常量
defined(“TITLE”);//通过defined判断常量时,常量一定要加上引号
魔术常量
- 量的值在程序运行过程中不会改变。但是,魔术常量的值,会随着所在位置的不同而改变。
- 魔术常量都由系统定义好的,我们直接使用就好了,常用的有:
- __LINE__:得到当前代码的行号
- __FILE__:得到当前文件的路径
- __DIR__:得到当前文件所在目录
- __FUNCTION__:得到所在函数
数据类型
数据类型分类
js中的数据类型:简单数据类型: Number,string,bool,undefined 复杂数据类型 数组,对象,null
- 基本数据类型:字符串型(string)、整型(int)、浮点型(float:小数)、布尔型(bool)
- 复合数据类型:数组、对象
- 特殊数据类型:资源、NULL
数据类型判断
is_bool(),判断变量是不是布尔型
is_int(),判断变量是不是整型
is_string() 判断变量是不是字符串型
is_float() 判断变量是不是浮点型
is_numeric() 判断变量不是数值型或数字字符串。
is_array() 判断变量是不是数组
is_null() 判断变量是否为NULL
is_resource() 判断变量是不是资源型
//判断用户是否大于18岁,如果大于18岁,显示网页内容,如果没有,则不显示$age = 20;if(isset($age) && is_numeric($age)) { if($age >18) { echo('显示网页'); } else { echo ('不显示'); }}
整型
关键字:int
在js中所有的数字都用number来表示,但是在PHP,数字有不同的划分,其中整数(正整数,0,负整数)用整型来表示
整型包含正整数、负整数、零0
可以用10进制、八进制、16进制表示
echo 100;//十进制echo 011;//八进制,以0开头的整数,结果为9echo 0x9a;//十六进制,以0x开头,结果为154
- PHP中最大整数:PHP_INT_MAX,(2^31)-1
如果数字超出来了整数据范围,则类型会变为float
浮点型
关键字:float
PHP中除了整数还有浮点型,一般浮点数会包含小数,比整型更加精确
浮点型的范围:1.8E-308~1.8E+308
注意点:
- 如果要对浮点数进行操作,就好先将浮点数转为整数再处理
//以下做法不可取if(2.1/0.7 == 3) { echo '相等';} else { echo '不相等';}//以下是正确做法$a = 2.1 * 10;$b = 0.7 * 10;if($a/$b == 3) { echo '相等';} else { echo '不相等';}
字符串
字符串定义的四种方式
用单引号可以定义一个字符串;如:$a = ‘abc’;
单引号内无法解析变量
转义符号有:\’
用双引号来定义一个字符串;如:$a = “abc”;
双引号内可以解析变量
转义符号有:\\、\’、\”、$、\r、\n、\t
定义长字符串:heredoc
<?phpheader('content-type:text/html;charset=utf-8');$a = 'abc';$aa = <<<heredoc<html>123$a</html>heredoc;echo $aa;?>
使用注意:
- 1)字符串放在两个heredoc标签之间
- 2)以“<<
布尔型
关键字:bool
概念
- true表示真,flase表示假
- 转换:
- 0,”“,NULL,0.0,”0”,arry() 空数组会转为false
- 其它的数据都会转为true
空型
- 用null表示,表示没有
- 以下情况会出现NULL
- 可以直接给一个变量,赋一个NULL值;
- 未定义的变量的值,也是NULL;
- unset()删除一个变量后,该变量的值为NULL。
数据类型转换
概念
- 数据有不同的类型,有时间操作数据时需要转换类型以后才能完成操作,比如计算
- 类型的转换分为两种:自动转换(隐式转换)、手动转换(强制转换)
- 大部分情况下数据是自动转换,少数情况下强制转换。
强制转换
- 通过关键字进行转换
(bool)$a //强制转换为bool //除了0,0.0,”“,”0“,NULL,array(),转为false,其余都为true(int)$a //强制转换为int //转换会将小数去尾(string)$a //强制转换为string //null也可以转为‘’;(array)$a //强制转换为array(object)$a //强制转换为object
进制转换
- 进制就进位制,X进制,就是逢X进一。同理:十进制就是逢十进一,二进制逢二进一等等。
- 8进制:有8个基本数,分别为0、1、2、3、4、5、6、7,运算规则”逢8进1”;
- 16进制:有16个基本数,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则”逢16进1”。
- 2进制:有2个基本数,分别是0、1,运算规则”逢2进1”。
- 转换方法:
- decbin()将十进制转换为2进制
- bindec()将2进制转换为十进制
- decoct()将十进制转换为8进制
- octdec()将八进制转换为10进制
- dechex()将十进制转换为16进制
- hexdec()将16进制转换为十进制
运算符
算数运算符+、-、*、/、%、++、–
赋值运算符=、+=、-=、*=、/=、%=
字符串运算符. 和 .=
- 案例:隔行变色
<?phpheader('content-type:text/html;charset=utf-8');$str = "<table width='500' border='1' align='center'>";$str .= "<tr bgColor='#f0f0f'>"; $str .= " <th>编号</th>"; $str .= " <th>新闻编号</th>"; $str .= " <th>发布时间</th>"; $str .= "</tr>";for($i = 0 ; $i < 10 ; $i ++) { if($i % 2 == 0) { $str .= "<tr bgColor='#f0f0f'>"; } else { $str .= "<tr>"; } $str .= "<td>$i</td>"; $str .= "<td> </td>"; $str .= "<td> </td>"; $str .= "</tr>";}$str .= "</table>";echo $str;?>
比较运算符>、<、>=、<=、\=\=、!=、\=\=\=、!==
案例:字符串比较
ASCII码表:如果两个字符进行比较,比较的本质是它们对应的ASCII码
echo ("a" > 120);
逻辑运算符&&、||、!
- 实例:闰年判断
//条件://1)能够被4整除,且不能被100整除//2)能被400整除$year = 2000;if ($year%4 == 0 && $year % 100 !=0 || $year % 400 ==0) { echo "{$year}是闰年";} else { echo "{$year}不是闰年";}
运算符优先级
三元运算符
- 案例:比较两个数的大小
$a = 123;$b = 456;$max = $a > $b ? $a : $b;
错误控制运算符(@)
作用:主要用来屏蔽表达式的错误:
可以用在变量、常量、函数调用之前,但是不能用在函数定义、类定义之前。
$a = 100;$b = 0;echo @($a / $b);
流程控制
顺序结构
- 赋值语句
$a = 123;
分支结构
- 分支结构(if)
- 多条件判断(if else if else)
- 案例:根据分数给评语。
- 多分支结构(switch)
- 案例:完成今天星期几
循环结构
- while
- do while
- for
- break和continue
- 案例:
- 1)得到1~100的所有整数相加之和
- 2)输出100~1000以内所有水仙花数
- 3)输出九九乘法表
数组
概念
- 数组是一组数的集合。如:$arr = array(1,2,3,4,5,6);
PHP中数组的分类
- 枚举数组
- 数组元素的下标(索引),是从0开始的正整数,如:$arr = array(1,2,3,4,5,6);
- 关联数组:
- 数组元素的下标,是一个字符串。如:$arr[‘edu’] = ‘大专’
- 关联数组无法通过数字下标取得对应的元素
- 混合数组:
- 两种下标都有的数组,就是混合数组。如:$arr = array(100, ‘edu’=>’大专’ , ‘tel’ => ‘130110’)
- 多维数组:
- 数组元素的值,是一个数组,还可以理解为:数组嵌套数组。如:$arr[5][2] = 100
数组的创建
使用 array() 函数来创建数组
创建枚举数组:
下标是从0 开始的正整数
$arr = array($value1,$value2,$value3,....);
创建关联数组
$key是重新给数组元素指定一个下标
下标和元素的值之间连接号是”=>”,又称”重载元素下标”
$arr = array([$key=>]$value,[$key=>]$value,[$key=>]$value,....)
创建混合数组
有字符串下标的元素,就没有整型下标
如果$key省略了,就用默认下标
下标只能是整型以及字符串
如果元素没有指定下标,会在最大整数下标的基础上加1.
$arr[] = $value
- 如果$arr数组不存在的话,会先创建数组,并添加第1个数组元素,第1个元素的下标为0
如果$arr已经存在 的话,添加新的数组元素,新的数组元素的下标,是最大整数下标+1
创建混合数组:
由语法1,2混合创建数组
$arr[] = 12;$arr[] = 13;$arr["a"] =14;$arr[] = 15;$arr[20] = 16;$arr[] = 19;
多维数组
多维数组,即数组中的元素又是一个数组
$arr = array(array(1,2,3,4),array(10,20,30,40),array('a','b','c'),"abc");
数组中的函数
- count()
- 计算数组中的单元数目或对象中的属性个数
- 语法:int count ( mixed $var [,\$mode = COUNT_NORMAL ] )
- 参数:
- $var 是对象或者数组
- $model: 如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count()识别不了无限递归
- unset()
- 删除变量或数组元素
- 语法:void unset ( mixed
var[,mixed … ] ) - 删除元素后,仅仅只是相当于将数据从数组中移除掉了,对数组的下标没有影响
数组的遍历
- 使用for加next()遍历数组
for($i = 0; $i < count($arr); $i++) { echo key($arr).current($arr)."<br/>" next($arr);}
- key():当前指针处元素的键名(下标),不会移动指针
- current():返回当前指针处元素的值,不会移动指针
- next(): 返回下一个元素的值,指针移动到下一个元素的开头
PHP中的数组传值时为值传递
$arr = array(1,2,3,4);$arr1 = $arr;$arr1[0] = 100;echo $arr[0];//1
函数
概念
- 函数是一段命名的代码段
- 封装一代码,将来要执行时可以直接调用
定义函数的方式
/* function 定义函数的关键字 functionName 函数的名称 arguments 形参列表 retValue 返回值 fnCode 功能代码*/function functionName(arguments){ // fnCode return retValue;}
- function: 定义函数的关键字,不区分大小写
- functionName:函数名称,命名规则与变量一样,只是不需要加$符号
- 小括号():主要用来接受传递过来的参数
- arguments:定义函数时的参数,形参
- return 函数的返回值。
函数的调用:
- 实参:调用函数时,传递的参数就是实参,含有真正数据的
形参:定义函数时的参数
案例:得到数组中所有数组的和
函数参数的传递:
- 值传递
- 函数参数的值传递,就是将参数的值,复制一份,传到函数中
- 值传递速度比较慢,但修改其中一个不会影响到另一个;
- 引用传递
- 引用传递速度比较快,但修改其中一个,另一个也会改变。
- 引用传递,是将一个变量的地址,复制一份,传到函数中
- 默认参数
- 函数中有些参数可能是固定不变的,为了操作方便,可以用默认参数来代替
- 默认参数必须放在非默认参数的右边
- 默认参数的值,只能是:字符串、整型、浮点型、布尔型、NULL、数组
function showSelf($name,$age=19,$gender="男") { echo "我叫{$name},今天{$age},性别{$ender}";}
函数可变数量参数
func_get_args( void ):返回一个参数列表的枚举数组,参数数组的下标是从0开始的整数
func_get_arg( $index ):返回参数数组中,指定下标的参数的值;
func_num_args( void ):返回实参的个数。
function getSum() { $arr = func_get_args(); $len = func_num_args(); $sum = 0; print_r($arr); echo "<br/>"; print_r($len); echo "<br/>"; for($i = 0; $i < $len; $i++) { $sum += func_get_arg($i); } echo "$sum";}getSum(1,2,3,4,5);
函数的返回值
- 函数的返回值,通过return语句来实现;
- 将函数的执行结果,返给了函数调用者;
- return语句一旦执行,函数立即结束,函数剩余的代码不再执行了。
- return语句有”中断”函数、”退出”函数;
- return不能同时返回多个值,只能返回一个值。如果想返回多个值,可以放入数组
常用系统函数
字符串
- 定义字符串基本语法
- 单引号字符串
- 双引号字符串
- nowdoc字符串
- heredoc字符串
- 字符串常用api
- strlen() 获取字符串长度
- substr() 返回字符串的子串
- strtoupper() 将字符串转化为大写
- strtolower() 将字符串转化为小写
- ucfirst() 将字符串的首字母转换为大写
- trim() 去除字符串首尾处的空白字符
- ltrim() 删除字符串开头的空白字符
- rtrim() 删除字符串末端的空白字符
- strrev() 反转字符串
- strpos() 查找字符串首次出现的位置,从左往右查找
- strrpos() 计算指定字符串在目标字符串中最后一次出现的位置,从右往左查找
- strchr()和strstr() 两者一样,用于查找字符串的首次出现
- str_replace() 子字符串替换
- str_repeat() 重复一个字符串
数学
- 常用函数
- max() 求最大值
- min() 求最小值
- rand() 产生一个随机整数
- mt_rand() 更高效的随机数
- ceil() 进一法取整
- floor() 舍去法取整
- round() 对浮点数进行四舍五入
- pow() 次方运算
- abs() 求绝对值
- sqrt() 开方运算
日期
- 常用函数
- time() 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数
- date() 格式化一个本地时间/日期
- microtime() 返回当前 Unix 时间戳和微秒数
- strtotime() 将任何英文文本的日期时间描述解析为 Unix 时间戳
- (一)php基础语法
- PHP基础语法(一)
- php学习一(基础语法)
- PHP基础语法总结(一)
- PHP基础一:基本语法
- PHP基础知识(一)——基础语法
- php 学习笔记 —— 基础语法 (一)
- 语法基础(一)
- 基础语法(一)
- 基础语法(一)
- PHP基本语法(一)
- java语法基础(一)
- java基础语法(一)
- lua 基础语法(一)
- Swift基础语法(一)
- JavaScript(一)基础语法
- Java基础语法(一)
- swift基础语法(一)
- GetMessage和PeekMessage的联系与区别以及用法 TranslateMessage与DispatchMessage
- Android mvp+Retrofit 登录注册
- AVFrame关于视音频数据存储
- 一个强化学习Value Iteration的演示教程
- Hibernate Criteria查询
- PHP基础语法(一)
- 如果你在运行动态库函数第一次没有问题。第二次段错误
- JS中用到的轮询小例子
- Linux下创建AndroidStudio快捷方式
- js 获得多个同name 的input输入框的值
- Python Day1
- 程序员开发必读书单
- 工厂Bean与普通Bean循环依赖
- 互斥量与信号量(互斥与同步)