欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP中的变量、常量、函数详解

程序员文章站 2022-03-26 10:50:57
变量 概念 内存中临时存储数据的一个空间。 (变量名必须区分大小写) 声明变量 $变量名 = 变量值; 删除变量 删除变量就是将变量从内存中销毁。 unset(变量...

变量

概念

内存中临时存储数据的一个空间。

(变量名必须区分大小写)

声明变量

$变量名 = 变量值;

删除变量

删除变量就是将变量从内存中销毁。

unset(变量名);

可变变量

$$变量名;

$v = 'age';
$age = 20;
echo $$v; // 输出结果为20

预定义变量

$_GET:接收get请求提交的数据; $_POST:接收post请求提交的数据; $_REQUEST:接收get或post请求提交的数据; $_SERVER:记录了服务器端与客户端的相关信息; $_COOKIE:一种会话技术; $_SESSION:一种会话技术; $_FILES:用于记录用户上传的文件信息; $GLOBAL:用于记录全局变量;

变量的声明周期

全局变量

生命周期是从脚本执行开始到脚本执行结束。

局部变量

生命周期是从函数执行开始,到函数执行结束。

静态变量

概念

static关键字声明的变量(不能重复定义)

原理

静态变量在函数多次被调用时,只会被初始化一次,并且静态变量的值并不会随着函数执行后空间的销毁而被销毁。在函数下一次调用时,仍然可以访问其值。

常量

概念

内存中永久存储数据的一个空间,一旦定义不可改变,不允许删除。
(常量名默认区分大小写,建议全大写)

定义常量

define(‘常量名’,常量值); const 常量名 = 常量值;

define和const区别

define可以在分支结构中定义常量,const不可以; define定义常量时可以设置是否区分大小写,const不可以;

常量函数

defined(); 判断常量是否已定义。 get_defined_constants();获取所有常量。

魔术常量

__FILE__        用于获取前文件名完整路径及文件名;
__DIR__         用于获取当前文件的路径;
__LINE__        用于获取当前行号;
__FUNCTION__    用于获取当前函数的函数名;
__METHOD__      用于获取当前方法的方法名;
__CLASS__       用于获取当前类的类名;
__NAMESPACE__   用于获取当前空间的空间名。

数据类型

三大类·八小类

标量(scalar)数据类型
int 整型 float 浮点类型 boolean 布尔类型 string 字符串


复合数据类型
array 数组 object 对象


特殊数据类型
null null resource 资源类型

字符串

字符串就是使用单引号或双引号括起来的0个或多个字符。

使用单引号定义的字符串
能够被转义的字符有 \ \ 单引号定义的字符串中的变量不能解析其值。


使用双引号定义的字符串
能够被转义的字符有 \” \t \r \n \ $ 双引号定义的字符串中的变量的值可以被解析。

转义符

转义符:\
用于将程序语言所赋予的某些字符的特殊功能转义掉。输出不可见的符。

转义符能够转义的字符:

\’ 单引号
\” 双引号
\t tab符
\r 回车符
\n 换行符
\ \
$ $

类型转换及判断

强转boolean类型:
(0、0.0、字符空、字符0、空数组、null是等效于布尔false)

isset():用于判断变量是否有设置值(判断变量的值是否为null值)

empty():用于判断变量v的值是否为”空”,此处的空表示只要是等效于布尔false的值都被empty认为是空。如果是空返回true,否则返回false。

函数

概念

使用function关键字定义,用{}包括的一段功能代码块。
(函数名不区分大小写)

语法

声明:
function funName(形参列表){
        // 函数体
        【return 值】
}
调用:

函数名(函数值);

作用域

默认php中有很”清晰”的作用域,外部只能访问外部的,内部只能访问内部。 在函数外部定义的变量及其作用域就是:全局变量和全局作用域。 在函数内部定义的变量及其作用域就是:局局变量和局部作用域。 常量没有作用域限制,一个脚本中的常量,在任何的位置都可以访问。 预定义变量(超全局变量)也不受作用域的限制。

跨作用域访问

1、通过参数传址:在形参前使用&,可以达到内部访问外部;
(以下例子可以实现函数内部修改函数外部的变量)
$a = 10;
function aa(&$a){
    $a = $a+10;
    return $a;
}
echo aa($a); //输出结果为20
echo $a;     //输出结果为20
2、$GLOBALS

$GLOBALS:全局作用域中可用的全部变量集合(一个包含了全部变量的全局组合数组)

(以下例子通过$GLOBALS实现函数内部获取函数外部的变量)
$a = 1;
$b = 2;
function aa(){
    $c = $GLOBALS['a'] + $GLOBALS['b'];
    return $c;
}
echo aa();  //输出结果为3
3、global关键字
语法

global 变量名;

说明

在函数内部建立一个与函数外部同名的变量的引用。
如果外部有这样的同名变量,会在外部创建一个同名的变量。

数组

概念

数组是一种数据的集合。
数组主要是用于存储具有行列特征(表格)的数据。

分类

索引数组
数组的下标是整数。这样的数组就是索引数组
(在php中数组的下标可以不连续)

关联数组
数组的下标是字符串。这样的数组就是关联数组。

数组创建

// 索引数组
arr1=array(10,20,30,40,50);arr2 = [10,20,30,40,50];

// 关联数组
arr3=array(键名=>键值,键名=>键值,….);arr4 = [键名=>键值, 键名=>键值,….];

数组遍历

for

for循环是使用循环控制变量来模拟下标的方式来遍历数据,只能遍历下连续或有规则

$arr = [10,20,30,40,50];
for($i=0;$i
foreach

语法:foreach(arras【key=>】$value){//循环体}

$arr = ['one'=>10,'two'=>20,'three'=>30,'four'=>40,'five'=>50];
foreach ($arr as $k => $v) {
    echo $k."=>".$v."
";
}
while-each-list
each()

用于获取当前指针所指向的元素键名与键值,并以索引元素与关系元素两种形式表示,同时将指针下移一行。

list()

语法:list(变量列表)=arr;将数组arr中的索引元素赋值给变量列表中的变量。

$arr = ['one'=>10,'two'=>20,'three'=>30,'four'=>40,'five'=>50];
while(list($k,$v) = each($arr)){
    echo $k."=>".$v."
";
}

数组函数

count() – 计算数组长度; array_keys() – 获取数组元素所有键名; array_values() – 获取数组元素所有键值; array_key_exists(key,arr)
– 用于判断某个键名是否存在于数组中,如果存在则返回true,否则 返回false; in_array(value,arr)
– 用于判断某个键值是否存在于数组中,如果存在则返回true,否则 返回false; array_merge(数组1,数组2…) – 数组合并; sort() – 对数组按键值进行升序排序; rsort() – 对数组按键值进行降序排序; extract() – 用于解压数组,将关联元素转换为以键名为变量名的变量。
($arr);$i++){>