您现在的位置是:首页  > 后端  > PHP PHP

php01(变量,常量,数据类型)

2020-05-06【PHP】1383人已围观

简介php是一种运行在服务器端的解释性脚本语言,php主要用于服务器脚本php执行过程--  词法分析--语法分析--编译--加载编译的代码--执行●●变量:保存可变的数据的容器。命名规则:字母下划线开头,后面跟任意长度下划线,字母,数字echo  向浏览器输出字符串die  exit(""); 报错输出,后面的代码不执行var_dump(); 此函数可输出变量的类型exit退出 unset($a)删除变量信息●变量的操作⊙增:php的变量可以直接拿来使用 &

php是一种运行在服务器端的解释性脚本语言,php主要用于服务器脚本

php执行过程--  词法分析--语法分析--编译--加载编译的代码--执行

●●变量:保存可变的数据的容器。

命名规则:字母下划线开头,后面跟任意长度下划线,字母,数字

echo  向浏览器输出字符串

die  exit(""); 报错输出,后面的代码不执行

var_dump(); 此函数可输出变量的类型

exit退出 unset($a)删除变量信息

●变量的操作

⊙增:php的变量可以直接拿来使用  $num=1;

⊙删:使用unset()函数来删除变量。 unset($num);

⊙改:直接加入新的变量

⊙查:用isset()函数来检查函数是否定义,用empty()来检查函数是否为空。

检查变量是否定义

用isset()来检查,定义过为真。

检查变量是否为空

用empty()来检查,是空为真。

●变量的赋值

⊙传值赋值

$m=23; $n=$m;  echo $m;

⊙引用赋值

$m=10;  $n=&$m;当被引用的对象值改变时,引用对象的值也随之改变

⊙删除引用

unset($a)删除变量信息

●可变变量

<?php

$m=a12;

$n=a13;

$i=a14;

if($i==a14){

$num='m';

}else{

$num='n';

};

echo $num,$$num; m a12

当变量有一个中间值,这个中间值得名称可能是非法变量名。

对于不确定变量名的时候,可以用{}进行定界

●预定义变量:php预先定义好的变量

$_GET 接收GET方式传递过来的数据

$_POST 接收表单以POST传递过来的数据

$_REQUEST =$_GET + $_POST

$_SERVER 保存服务器、浏览器相关的数据

$_ENV 保存环境变量相关的数据

$_COOKIE 保存COOKIE数据

$_SESSION 保存SESSION数据

$_FILES 接收上传文件的数据

$GLOBALS 可以引用全局范围内可见的变量

$argc $argv 保存命令行程序接收的参数数量和数据

⊙GET方式传值是通过url后面加入?变量名  1=值 1&变量名 2=值

注意:1.如果值有特殊符号或中文内容时,最好使用urlencode()函数去编码

b.php?name=<?php urlencode('值') ?>

2.GET方式传递有可能出现变量名相同的情况

后面的变量的值会覆盖前面的同名变量的值

通过将表单的method属性设为get,也可以实现get方式传值

⊙POST方式传值

POSRT的数据不会再url后面显示

POST可以传递更大数据量的数据,也不考虑urlencode问题

⊙REQUEST传值

等于GET+POST传值

当post与get有同名变量时会覆盖

覆盖方式可以在php.ini中设置

request_order = "GP"

●变量的作用域

全局变量:在脚本运行中可见的变量,不包括在局部作用域中

局部变量:在函数中的变量

超全局变量:在所有的范围内可见的变量。 $_GET,$_POST

静态变量一般放在函数提内

生命周期:脚本执行完毕

function fun(){

static $num = 10;

$num++;

echo $num;

}

fun();//11

fun()//12

●●常量

在脚本运行过程中,值保持不变的量

●表示方法:常量是直接用一个名称来表示的。前面不需要$符号   num=4;

●常量的操作

增:常量必须用define()函数或const关键字来定义

define('NUM','40'); const NUM2= 4;

var_dump(NUM,NUM2);

删,改:常量不允许删除,修改,重定义。

查:用输出函数直接进行显示

echo  var_dump    echo constant('常量名')

查看函数是否定义:defined()函数判断

var_domp(defined('常量名'));

php不允许使用未定义的变量

●预定义常量:php预先制定好的常量

echo PHP_INT_MAX;  php中整型最大值

获取所有常量get_defined_constants(true);(true)将常量分类显示出来

●魔术常量:值在运行时才确定的量

__LINE__获得当前行号

__FILE__当前文件结对路径

__DIR__获取当前文档的绝对路径

dirname(__FIEL__)  = __DIR__

__FUNCTION__获得函数名称

__CLASS___ 获取类名称

__METHOD__获取方法名称

__NAMESPACE__当前命名空间名称

●●数据类型

php支持8种数据类型

4种标量类型:整型、浮点型、布尔型、字符串型

2种符合类型:数组、对象

2种特殊类型:资源类型、NULL类型

伪类型:混合型(mixed),数字型(number),回调(callback)

标量类型

●布尔类型 bool  boolean

布尔型只有两个值:true,false,不区分大小写

常用于逻辑判断

其他类型的变量也可以转换成布尔类型 $m=4; var_dump(bool($m));

●整型 int integer

占用4个字节 byte   1byte=8bit

整型在计算机上储存时,最高位是符号位,0正,1负

常量PHP_INT_MAX 最大储存位

整数溢出后为浮点型

●浮点数 float

php中部分单双精度

浮点数的有效位数是14位

从最左边不为0的数开始,直到结束的数的个数,不含小数点

浮点数不能精确比较

●字符串型 string:字符的集合。

四种表示方式:单引号、双引号、nowdoc,heredoc

用单引号表示时:字符串中含有单引号时,用\转义  \'

反斜杠\出现在字符串最后时需要转义12\\

双引号不需要转义

单引号中的变量不能够被解析

用双引号表现时:双引号中的变量能够被解析

要输出$时要用\转义

可以输出ascii码代表的字符

Nowdoc  主要为了表示内容比较复杂的字符串

格式:$str=<<<'自定义名称'

大段类容

自定义名称;

类似于单引号内容

Heredoc

格式:$str=<<<自定义名称

大段类容

自定义名称;

类似于双引号内容

有时变量不清楚时,可以用{}定界符来明确标量

{$name}09877

复合类型

●数组类型 array :按照一定结构的数据集合

数组中的数据称为元素,它是由键和值组成的键值对。 key=>value

如果元素没有指定键,那么系统会给它分配一个下标

echo输出一个数组元素  echo $arr[3];

⊙array()结构定义数组

空数组:没有数据的数组    $arr = array(); var_dump($arr);

键值数组:  元素全部由键值对组成的数组

$arr1 = array(

'name'=>'zhangsan',

'age'=>18,

'city'=>'shanghai',

'love'=>'game',

);

var_dump($arr1);

下标数组:就是元素全部用无键数据组成的数据

$arr1 = array('zhangsan','18','shanghai','game');

var_dump($arr1);

当元素没有键时,元素的下标会由系统进行分配,从0开始,

当中间某个元素有下标时,如果是最大值,则后面的元素从其加1开始

小值代替前面的元素

关联数组:关联数组中的键不参与下标分配

$arr1 = array('zhangsan','age'=>18,'game');

var_dump($arr1);

array(3) { [0]=> string(8) "zhangsan" ["age"]=> int(18) [1]=> string(4) "game" }

负数可以作为元素的下标,但它不影响下标的分配

⊙使用[]定义数组,每次只能定义一个数组元素,通过这种方式不能够定义出空数组,

因为他本身就是在定义一个数组元素。   $arr2[] = 'game';   var_dump($arr2);

定义下标数组:

$arr3[] = 'age';

$arr3[] = 'love';

$arr3[] = 'city';

var_dump($arr3);

array(3) { [1]=> string(3) "age" [2]=> string(4) "love" [3]=> string(4) "city" }

定义键值数组:

$arr4['age'] = '18';

$arr4['love'] = 'game';

$arr4['city'] = 'shanghai';

var_dump($arr4);

array(3) { ["age"]=> string(2) "18" ["love"]=> string(4) "game" ["city"]=> string(8) "shanghai" }

⊙键 , 下标   , key

数组元素的键只能是整形和字符串类型,可以为负数

当键值是字符串时,且值是合法的整数,则会自动转换成下标

浮点数下标会丢弃小数部分,转化成下标

$arr5[1] = 'qq';

$arr5[3.3] = 'ww';

$arr5['4.4'] = 'rr';

var_dump($arr5);  array(3) { [1]=> string(2) "qq" [3]=> string(2) "ww" ["4.4"]=> string(2) "rr" }

布尔型true转化成下标值1,false转化成下标0。  $arr[true]='18';

键或者下标可以使用表达式  $arr[1+2*3] = 'age';

数组的元素值可以是任何类型的数据,

$arr6= array(

'age'=>'18',

'city'=>'shanghai',

'love'=>'game',

'abc'=>array('a'=>1,'b'=>2,"c"=>3,)

);

var_dump($arr6);

⊙访问数组:

使用[]中放下标或键名来访问  echo $arr[3];  echo $arr['name'];

访问二维数组时,使用[][]   echo $arr6['abc']['b'];

⊙修改数组:

使用[]里面写下标或键来对数组元素重新赋值。

$arr[4]=>'asd';

数组名重复将覆盖。

⊙删除数组:

使用unset()来删除数组或数组元素。

删除整个数组unset($arr);

●对象,object

对象是一种特殊的数据结构,它是通过类的实例化得到的。

类,class,是设计图,是对象的抽象

对象,object,是实物,通过类的实例化得到

实例化,new,从设计图产生实物的过程

⊙对象的定义

class student{

public $name;

public $age;

}

$s = new student();

var_dump($s);

object(student)#1 (2) { ["name"]=> NULL ["age"]=> NULL }

⊙访问对象

使用->可以访问对象的属性和方法

对象变量名->属性变量名   ->左右不能有空格

echo $s->age;

●资源类型 , resource

资源类型是一种特殊的文件类型,它是通过特殊的函数产生的外部引用

例如:数据库连接,打开文件句柄

⊙自定义资源

$zy popen('index.php','r');

$zy = mysql_connect('localhost','root','admin');

var_dump($zy);

resource(3) of type (stream)

修改php配置文件,连接数据库

⊙删除资源类型

资源类型数据不能用unset删除

通过php提供的函数去删除fclose($zy);    mysql_close($zy);

●NULL类型

表示什么都没有,不是表示空,只有一个数据  NULL

通过unset()删除变量可以产生null

可以直接定义变量为null   $a = null;

⊙判断null类型

使用isset()可以判断变量是否定义

使用is_null()判断变量是否是null



关注博客,更多精彩分享,敬请期待!
 

Tags:

很赞哦! (0)

我的名片

网名:随心

职业:PHP程序员

现居:湖北省-武汉市

Email:704061912@qq.com