php学习笔记01:PHP基础:常量、变量、数据类型/转换、运算符

讲座

超全面的PHP全系列教程(P1 崭露头角)3338:13超全面的PHP全系列教程(P1 崭露头角)
超全面的PHP全系列教程(P2 学有小成)2837:38超全面的PHP全系列教程(P2 学有小成)
PHP系列教程之三登堂入室P1(php核心编程,面向对象)2526:00PHP系列教程之三登堂入室P1(php核心编程,面向对象)
PHP系列教程之三登堂入室P2(PDO,Smarty,MVC)1261:29PHP系列教程之三登堂入室P2(PDO,Smarty,MVC)
 

(官网)【PHP+H5全栈】php全套之四厚积薄发

 

====================以上为一套课程。我的笔记是下面这一套==================================

28天PHP零基础入门到精通教程(P1基础6天)1133:02 28天PHP零基础入门到精通教程(P1基础6天)
28天PHP零基础入门到精通教程(P2 mysql数据库5天)987:37 28天PHP零基础入门到精通教程(P2 mysql数据库5天)

28天PHP零基础入门到精通教程(P3 核心编程技术)887:06 28天PHP零基础入门到精通教程(P3 核心编程技术)
PHP进阶教程从零基础入门到掌握面向对象编程【黑马程序员精品教程】894:13 PHP进阶教程从零基础入门到掌握面向对象编程

(不全.可至爱奇艺:https://www.iqiyi.com/v_19rqrs2b2c.html?vfm=m_303_qqll 或者至官网下载下3套)

(官网)【PHP+H5全栈】PHP零基础入门掌握面向对象编程(上)

(官网)【PHP+H5全栈】PHP零基础入门掌握面向对象编程(中)

(官网)【PHP+H5全栈】PHP零基础入门掌握面向对象编程(下)之实战博客系统


之后可继续学习:

(官网)【PHP+H5全栈】php全套之四厚积薄发

1天内容为XML语法格式与PHP对XML操作
2-6天内容为Javascript深度认识与高级操作
7-8天内容为AJAX客户端无刷新接收客户端数据
9-11天内容为jQuery框架(代码库)
12天内容为SVN客户端与服务端操作

============================笔记开始=====================================

 

28天PHP零基础入门到精通教程(P1基础6天)1133:02 28天PHP零基础入门到精通教程(P1基础6天)

https://www.bilibili.com/video/av12863134

PHP基础

PHP标准标记:php代码格式如下

<?php

php代码1……

php代码2……

……

?>

另有短标记和脚本标记,不建议使用。

 

PHP注释:

1、行注释:①//注释内容   ②#注释内容

2、块注释:/*注释内容(可注释多个段落)*/

语句分隔符:英文;号

语句结束符:在单独的php代码组成的php文件中,可以省略语句php语句结束符?>,php系统会自动在代码最末尾添加语句结束符。

变量:变量名前必须加$符号

1、定义:$变量名;如:$a;//定义变量

2、定义时赋值:如$a=1;//定义变量时赋值

3、删除变量,使用unset函数:如unset($a);//删除如上已定义的变量$a

变量命名规则

1.、以$符号打头;

2、【传统】名字由字母数字下划线构成,但不能以数字开头,注意字母区分大小写;

3、【扩展】变量名支持Unicode(如中文);

预定义变量:系统提前定义的变量,都是数组 

https://www.php.net/manual/zh/reserved.variables.php

$_GET:获取所有表单以get方式提交的数据。

$_POST:post提交的数据都会保存在此。

$_REQUEST:get和post提交的都会保存。

$GLOBALS:php中所有全局变量。

$_SERVER:服务器信息。

$_SESSION:会话信息。

$_COOKIE:cookie会话数据

$_ENV:环境信息

$_FILES:用户上传的文件信息

可变变量:

如果一个变量保存的值刚好是另一个变量的名字,那么可以直接通过访问变量得到另一个变量的值,在该变量前多加个$符号。例如:

$a='b';

$b='hello';

echo $$a;//输出$b的值hello。
//原理是$$a首先取出$a的值b,b再和第一个$结合成为$b,则表达式总值为$b。

变量传值:

1、值传递:将A变量的值复制一个副本,将副本赋值给B变量。A,B变量互相独立,没有关系;

如上图,当变量b值从1改变为2的时候,与变量a没有任何关系。

2、引用传递:将A变量保存的值所在的内存地址传递给B变量,则A,B变量指向同一块内存空间,两者指向同一数据,即A,B是同一物。

格式:$新变量 = &$旧变量;//&是取地址的意思

两种赋值对比的代码:

内存分区:

栈区:程序可以操作的内存部分(不存数据,运行程序代码),少,但是快。

代码段:存储程序的内存部分(不执行)

数据段:存储普通数据(全局区和静态区)

堆区:存储复杂数据,大,效率低。

常量:

常量:const/constant,一旦定义,值不可改变(用户级别)。

定义常量,有2种方式

1、使用定义常量的函数:define('常量名',常量值);

2、(php5.3以后):const 常量名=常量值;

;

常量命名规则:

1、常量不需要使用$符号;

2、命名规则同变量命名规则;

3、命名规范:常量命名以纯大写字母构成(与变量以示区别)。

4、例外,特殊常量:常量的命名比较松散,可以使用一些特殊的字符,但只能用define函数定义,如下图:

☆define函数和const定义常量有区别:在于访问权限区别。

☆define函数定义的常量可以是大小写敏感的,也可以是大小写不敏感的【不建议】,见php手册define函数参考

☆特殊符号定义的常量,例如define('-_-','smile');不能直接访问(例如:echo -_-;//这种写法语句错误!),须使用constant函数:echo constant('-_-');//这种写法是正确的

系统常量:

PHP_VERSION:php版本号

PHP_INT_SIZE:int占用字节大小

PHP_INT_MAX:int类型最大值

魔术常量:https://www.php.net/manual/zh/language.constants.predefined.php

系统中还有一些以双下划线开始+‘常量名’+双下划线结束的常量。魔术常量的值通常会跟着环境变化,但是用户改变不了。

__DIR__:当前被执行的脚本所在电脑的绝对路径

__FILE__:当前被执行的脚本所在电脑的绝对路径(带自己文件名)

__LINE__:当前所属的行数

__NAMESPACE__:当前所属的命名空间

__CLASS__:当前所属的类

__METHOD__:当前所属的方法

数据类型:

在php中指的是存储的数据本身的类型,而不是变量的类型。php是弱类型语言,变量本身没有数据类型(可以理解变量为万能变量,可以赋予任何类型的数据。其他高级语言有的有类似万能变量)

PHP的八种数据类型:分为三大类八小类

1、简单(基本)数据类型:4小类

①整型数据:int/integer:占4字节,表示整数类型(有前提)

②浮点型:float/double,占8字节,表示小数或整型存不下的整数

③字符串类型;string,系统根据实际长度分配。

④布尔类型:bool/boolean,值为ture或false

2、复合数据类型:

①对象类型:object,存放对象。

②数组类型:array,存放多个数据

3、特殊数据类型:

①资源类型:resource,存放资源数据(php外部数据,如数据库、文件)

②空类型:NULL,只有这一个值(不能运算)

类型转换
在很多条件下,需要指定的数据类型。需要外部数据类型转换成目标数据类型。

在php中有两种数据类型转换方式

1、自动转换:系统自己自动判定转换;

2、强制/手动转换:人为转换。方法:在变量前加一对括号(),在里面写上转换类型,如int...其中NULL类型用unset;

 

在转换过程中,用的比较多的是转布尔类型(判断)和转数值运算(算术运算)

其他类型转布尔的规则如下图:参考:PHP 类型比较表

其他类型转数值:

1、布尔:true为1,false为0;

2、字符串zh转数值有自己的规则:

①以字母开头的永远为0;

②以数字开头的字符串,取数字(不会同时包含2个小数点);

类型判断:

通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据数据类型。它们是一组以is_开头后面跟数据类型的函数:is_xxx(变量名),详见PHP参考手册

  • is_array — 检测变量是否是数组
  • is_bool — 检测变量是否是布尔型
  • is_callable — 检测参数是否为合法的可调用结构
  • is_countable — Verify that the contents of a variable is a countable value
  • is_double — is_float 的别名
  • is_float — 检测变量是否是浮点型
  • is_int — 检测变量是否是整数
  • is_integer — is_int 的别名
  • is_iterable — Verify that the contents of a variable is an iterable value
  • is_long — is_int 的别名
  • is_null — 检测变量是否为 NULL
  • is_numeric — 检测变量是否为数字或数字字符串
  • is_object — 检测变量是否是一个对象
  • is_real — is_float 的别名
  • is_resource — 检测变量是否为资源类型
  • is_scalar — 检测变量是否是一个标量
  • is_string — 检测变量是否是字符串

bool类型不能用echo来查看(因为无法确认是字符串true还是bool类型true),可以用var_dump()来查看。格式为:var_dump(变量1,变量2,……);

如上图判断$a(本例为字符串类型)是不是int类型(实际为不是,即false),$a是不是string类型(实际为是,即true)。根据实际结果输出真或假。

还有一组函数可以用来获取/设置数据(变量)的类型。

gettype(变量名):获取类型,得到表示该变量数据类型的字符串。

返回的字符串的可能值为:

  • boolean”(从 PHP 4 起)
  • integer
  • double”(由于历史原因,如果是 float 则返回“double”,而不是“float”)
  • string
  • array
  • object
  • resource”(从 PHP 4 起)
  • NULL”(从 PHP 4 起)
  • “user function”(只用于 PHP 3,现已停用)
  • “unknown type”

settype(变量名,类型):设定该变量的数据类型。

type 的可能值为:

  • “boolean” (或为“bool”,从 PHP 4.2.0 起)
  • “integer” (或为“int”,从 PHP 4.2.0 起)
  • “float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
  • "string"
  • "array"
  • "object"
  • “null” (从 PHP 4.2.0 起)

与强制转换不同:

1:强制转换:(类型)变量名:不改变变量本身数据类型,

$a="100";
$b=(int)$a;//$a为string类型,本身不改变;(int)$a为int类型;$b是(int)$a即int类型
var_dump($a,$b)//$a是字符串,$b是int类型
//输出结果:string(3) "100" int(100)

2:settype:会直接改变变量存储的数据本身。

$a="100";//$a为string类型
var_dump($a);//输出string(3) "100" 
echo'<br>';
settype($a,'int');//$a从string类型变为int类型
var_dump($a);//输出int(100)

整数类型

在php中提供了4种定义整型的方式:10进制,2进制,8进制,16进制

$a1=110;//10进制
$a2=0b110;//2进制
$a3=0110;//8进制
$a4=0x110;//16进制
echo $a1,'~',$a2,'~',$a3,'~',$a4,'<br>';//注意:输出结果皆为10进制

进制转换:以下函数位于PHP参考手册Math 函数字符串 函数部分

  • base_convert — 在任意进制之间转换数字
  • bindec — 二进制转换为十进制
  • decbin — 十进制转换为二进制
  • dechex — 十进制转换为十六进制
  • decoct — 十进制转换为八进制
  • hexdec — 十六进制转换为十进制
  • octdec — 八进制转换为十进制
  • bin2hex — 函数把包含数据的二进制字符串转换为十六进制值
  • hex2bin — 转换十六进制字符串为二进制字符串

浮点类型:带小数的数和超过整型范围的整数(不保证精度),精度范围大概是15个有效数字。

以上是浮点数的几种表现方式。

注意:计算机中小数大多数情况下不准确(有时候也准)。如下图:

$f6=$f5/3即2.1/3=0.7;但$4(0.7)和$f6不相等!因为计算机中小数一般不准!所以不要用带小数的数做相等判断。

布尔类型:两个值true和false,通常用于比较判断。

在进行某些数据判断的时候,需要特别注意类型转换。

empty():判断数据的值是否为“空”,不是NULL。如果为空返回true,否则返回false。

isset():判断数据存储的变量本身是否存在,存在变量返回true,否则返回false。

参考:PHP 类型比较表

运算符:在php中有10种运算符 运算符参考

赋值运算符 =

算术运算符:+、 -、 *、 /、 %(取余、求模)

注意:和数学一样,被除数不能为0.

比较运算符:>大于、 >=大于等于、 <小于、 <=小于等于、 ==等于、 !=不等于、 ===全等于、 !===不全等于

注意【全等于】和【不全等于】比较的数据类型必须完全一致。

如上图,用等于运算符判断,$a,$b比较之前(如果数据类型不一致)系统会自动类型转换,转换后结果一致。故为true。

如上图,使用全等运算符判断,系统会判断$a和$b数据类型是否一致。本例不一致。故为false。

逻辑运算符:

逻辑运算:针对不同的结果进行匹配

&&:逻辑与。与。

!!:逻辑或。或者。

!:逻辑非。非。

【重要】短路运算!:如果【逻辑与】、【逻辑或】第一个表达式已经满足条件了,那么就不会运行后面的表达式(如果有的话)。规范建议:书写代码的时候,尽量将出现概率最高的(能够直接判断出结果)表达式放到第一位。

连接运算符:

连接运算:PHP中将多个字符串拼接成1个字符串。

.(英文点符号):将两个字符串拼接在一起。

.=(点等于):累加字符串。例如:$a.= $b;等价于:$a = $a + $b;

错误抑制符:

@:在可能出错的语句前使用@符号,这些错误将不会显示。

错误抑制符通常在生产环境使用,开发环境不会用。

三目运算符:

格式:表达式?表达式:表达式

表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

Note: 注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句 return $var == 42 ? $a : $b; 将不起作用,以后的 PHP 版本会为此发出一条警告。

如上图,表达式1($a>10)不成立,则执行表达式3.

自操作运算符:++自增、--自减

前置和后置的区别:后置,使用原值参与其他运算,运算结束后自操作;前置,直接自操作改变原值,再参与其他运算。

上图$a和$b的自增运算皆不参与其他运算,因此最后值都为2.

如上图,执行echo $a++,++$b;输出2和3。注意【($a++)的值】$a原值【2】执行完$a++【之后】,【$a才自增变成3】.

自操作衍生:操作符=,例如:+=,-=,*=,/=,%=

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值