常量特点

  • 常量一旦被定义就无法更改或撤销定义。
  • 常量名不需要开头的$
  • 与变量不同,常量贯穿整个脚本是自动全局的。 作用域不影响对常量的访问
  • 常量值只能是字符串或数字

设置 PHP 常量

如需设置常量,请使用 define(name, value) 函数,它有三个参数: 
- 首个参数定义常量的名称 
- 第二个参数定义常量的值 
- 可选的第三个参数规定常量名是否对大小写敏感。默认是大小写敏感:false。

define("MYNAME", "白小明");
echo MYNAME; // 白小明
echo MyName; // undefined MyName define("NAME", "白小明", true);
echo NAME; // 白小明
echo Name; // 白小明

获取 PHP 常量

  • 使用常量名直接获取值;
  • 使用 constant() 函数,它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便。

判断一个常量是否已经定义:defined()

define("PI",3.14);

$is1 = defined('PI');
$is2 = defined('PI1'); var_dump($is1); // boolean true
var_dump($is2); // boolean false

PHP中的常量分为自定义常量和系统常量

1. 自定义常量

在 PHP 中,用 define() 函数定义一个常量

define("PI",3.14);
echo constant('PI'); define("GREETING","Hello world!",TRUE);
echo constant('greeting');

2. 系统常量

常见的系统常量有:

  1. __FILE__:php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。

  2. __LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。

  3. PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。

  4. PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。

  5. apache_get_version():Apache版本

  6. PHP_SAPI:运行方式

echo __FILE__; // E:\Web\Project\_wamp\demo.php
echo __LINE__; // 3
echo PHP_VERSION; // 5.6.25
echo PHP_OS; // WINNT

PHP 变量规则:

  • 在 PHP 中,没有创建变量的命令,变量会在首次为其赋值时被创建。

  • 在 PHP 中,所有变量都对大小写敏感,而对所有用户定义的函数、类和关键词的大小写不敏感。

  • 变量以 $ 符号开头,其后是变量的名称

  • 变量名称必须以字母或下划线开头,不能以数字开头

  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)

PHP 变量的三种作用域:

PHP 在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。

global(全局作用域)

  • 函数之外声明的变量拥有 global 作用域,只能在函数以外进行访问。

local(局部作用域)

  • 函数之内声明的变量拥有 local 作用域,只能在函数内部进行访问。
  • 可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被创建它的函数所识别。
  • 如果要在函数内部使用全局变量,可以在变量前加 global 关键字。

static(静态作用域)

  • 通常,当函数执行后,会删除所有变量,不过,有时我需要不删除某个局部变量。
  • 实现这一点需要在您首次声明变量时使用 static 关键词,但是该变量仍然是函数的局部变量。
  • 所以,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
$a = 10; // global

// 在函数内部直接使用全局变量
function f1() {
echo $a;
}
f1(); // Undefined
echo $a; // 10 // 在函数内部运用 global 使用全局变量
function f2() {
global $a;
echo $a;
}f2(); // 10 // 在函数内部运用 $GLOBALS['variable'] 使用全局变量
function f3() {
$GLOBALS['a'] += 10;
echo $GLOBALS['a'];
}
f3(); // 20 // static
function f4() {
static $a = 50;
echo $a;
$a++;
}
f4(); // 50
f4(); // 51
f4(); // 52

PHP 超全局变量

超全局变量 在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量,在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

$GLOBALS

PHP 在名为 $GLOBALS[‘variable’] 的数组中存储了所有全局变量。变量的名字就是数组的键。

$x = 1;
$y = 2;
function add() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
add();
echo $z; // 3

$_SERVER

$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。

能够在 $_SERVER 中访问的元素:http://www.w3school.com.cn/php/php_superglobals.asp

echo $_SERVER['SERVER_NAME'];          // localhost

echo $_SERVER['HTTP_HOST'];            // localhost

echo $_SERVER['PHP_SELF'];         // /PHPDemo/demo.php

echo $_SERVER['SCRIPT_NAME'];          // /PHPDemo/demo.php

echo $_SERVER['HTTP_REFERER'];         // http://localhost/PHPDemo/

echo $_SERVER['HTTP_USER_AGENT'];      // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

$_REQUEST

$_REQUEST 用于收集 HTML 表单提交的数据。

method=”GET” 和 method=”POST” 都适应

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="bxm">
<input type="submit" value="提交">
</form>
<?php
$bxm = $_REQUEST['bxm'];
echo $bxm;
?>
</body>
</html>

$_POST

PHP $_POST 广泛用于收集提交 method=”post” 的 HTML 表单后的表单数据。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="bxm">
<input type="submit" value="提交">
</form>
<?php
$bxm = $_REQUEST['bxm'];
echo $bxm;
?>
</body>
</html>

$_GET

PHP $_GET 广泛用于收集提交 method=”get” 的 HTML 表单后的表单数据。

$_GET 也可以收集 URL 中的发送的数据。

<a href="demo.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>

<?php
$subject = $_GET['subject'];
$web = $_GET['web'];
?>

$_FILES

存储各种与上传文件有关的信息

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<input type="file" name="myFile" value="" placeholder="">
<input type="submit" name="" value="提交">
</form> <?php
echo $_FILES["myFile"]["name"] . "<br>"; // 头像.png
echo $_FILES["myFile"]["size"] . "<br>"; // 142344
echo $_FILES["myFile"]["tmp_name"] . "<br>"; // D:\wamp64\tmp\phpFDC5.tmp
echo $_FILES["myFile"]["type"] . "<br>"; // image/png
echo $_FILES['myFile']['error'] . "<br>"; // 0
?>

$_ENV

PHP中的$_ENV是一个包含服务器端环境变量的数组。

var_dump($_ENV);

$_COOKIE

将用户的会话数据存储在客户端浏览器

setcookie('test', '', time() -1);
ob_start(); // 打开输出控制缓冲
print_r($_COOKIE); $content = ob_get_contents(); // 复制缓冲区内容到$content中
$content = str_replace(" ", '&nbsp;', $content); ob_clean(); // 清空(擦掉)输出缓冲区
header("content-type:text/html; charset=utf-8");
echo '当前的Cookie为:<br>';
echo nl2br($content); // nl2br 在字符串所有新行之前插入 HTML 换行标记 <br>

$_SESSION

将用户的会话数据存储在服务端

session_start(); // 创建一个 session
$_SESSION['sessionName'] = 'sessionValue'; echo "session_id:" . session_id() . "<br>"; // 显示当前的session_id
echo $_SESSION['sessionName']; // 读取 session 的值 unset($_SESSION['sessionName']); //销毁一个session
var_dump($_SESSION);

PHP 变量的数据类型

在 PHP 中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。

PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型,一定程度降低了学习PHP的门槛。

1. 布尔类型(boolean)

TRUE 与 FALSE,不区分大小写。

$flag = TRUE;

2. 整型(integer)

整型可以用十进制、八进制、十六进制指定。 
- 十进制就是日常使用的数字 
- 八进制,数字前必须加 0 ,如0123 
- 十六进制,数字前必须加 0x ,如0x1a

3. 浮点型(float)

也就是通常说的小数,可以用小数点或者科学计数法表示。E代表的英文是exponent,指数的意思。

$num_float1 = 1.234;    //小数点
$num_float2 = 1.2e3; //科学计数法,小写e
$num_float3 = 7.0E - 10; //科学计数法,大写E

4. 字符串(string)

字符串型可以用三种方法定义:单引号形式双引号形式和 Heredoc 结构形式。

单引号与双引号的作用是有区别的: 双引号解析变量,单引号不解析变量 。在没有变量的时候最好使用单引号,速度比较快。

$var1 = 'hello';
echo '$var1'; // $var1
echo "$var1"; // hello

单引号与双引号可以嵌套, 单双、双单会输出。单单、双双需转义

$str_string1 = '甲问:"你在哪里学的PHP?"';
$str_string2 = "乙毫不犹豫地回答:'当然是慕课网咯!'";
$str_string3 = '甲问:\'能告诉我网址吗?\'';
$str_string4 = "乙答道:\"www.imooc.com\"";

当字符串很长可以使用 Heredoc 结构形式,只要用了<<<之后用相同的字母作为起点和结尾就可以了。 
heredoc 和 nowdoc:link

<?php
$string1 = <<<GOD
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
GOD; echo $string1;
?>

5. 复合类型 — 数组(array)

数组是一个复合类型的变量,能够在单独的变量名中存储一个或多个值。

$arr = array(); // 表示创建一个空数组,并把创建的空数组赋值给变量$arr。

$fruitArr1 = array("苹果","香蕉","菠萝");

$fruitArr2 = array("0"=>"苹果", "1"=>"香蕉", "2"=>"菠萝", "3"=>array("大葡萄","小葡萄"));

在 PHP 中,有三种数组类型:

索引数组 : 带有数字索引的数组,键的顺序是从0开始。创建方法:

$fruitArr = array("苹果", "香蕉", "菠萝");

for ($i = 0; $i < count($fruitArr); $i++) {
echo $fruitArr[$i];
}

关联数组 : 带有指定键的数组,自己分配给数组的指定键。创建方法:

$age = array("Bill" => "35", "Steve" => "37", "Peter" => "43");
$age['bxm'] = '白小明'; foreach($age as $x => $x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}

多维数组 : 包含一个或多个数组的数组

$fruitArr = array(
array("苹果", 33, 20),
array("香蕉", 17, 15),
array("葡萄", 5, 2),
array("橘子", 15, 11)
); // 获得数组的长度 - count() 函数
for ($i = 0; $i < count($fruitArr); $i ++) {
echo "<b>行数 $i</b>";
echo "<ul>"; for ($j = 0; $j < count($fruitArr[$j]); $j ++) {
echo "<li>" . $fruitArr[$i][$j] . "</li>";
} echo "</ul>";
}

6. 复合类型 — 对象(class)

在 PHP 中,必须明确地声明对象。

首先我们必须使用 class 关键词声明对象的类。类是包含属性和方法的结构。

然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:

class Car {
var $color; function Car($color="green") {
$this->color = $color;
} function what_color() {
return $this->color;
}
}

7. 特殊类型 — 资源(resource)

资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。

可以对资源进行操作(创建、使用和释放)。

任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用 垃圾回收机制 ,在页面执行完毕后回收资源,以避免内存被消耗殆尽。

<?php
// f.txt文本文件保存时一定要设置为UTF-8格式,避免出现乱码。
// open() 函数:打开文件,得到返回值的就是资源类型。
$file_handle = fopen("f.txt","r"); if ($file_handle){
// 一行行地读取文件,然后输出每行的文字
// feof() 函数:检测是否已到达文件末尾。
while (!feof($file_handle)) {
// fgets() 函数:读取一行文本
$line = fgets($file_handle);
//输出一行文本
echo $line;
echo "<br />";
}
} // fclose() 函数:关闭文件,释放资源
fclose($file_handle); ?>

8. 特殊类型—空类型(NULL)

NULL是空类型,对大小写不敏感

NULL类型只有一个取值,表示一个变量没有值,可以通过把值设置为 NULL,将变量清空

当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。

<?php
// 禁止显示PHP警告提示
error_reporting(0); $var;
var_dump($var); $var1 = null;
var_dump($var1); $var2 = NULL;
var_dump( $var2); $var3 = "白小明";
unset($var3);
var_dump($var3);
?>

PHP 常量、PHP 变量全解析(超全局变量、变量的8种数据类型等)的更多相关文章

  1. PHP全局变量,超全局变量

    php中有许多超全局变量,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS    引用全局 ...

  2. php全局变量 超全局变量

    php中有许多超全局变量,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS    引用全局 ...

  3. Google Guava Cache 全解析

    Google guava工具类的介绍和使用https://blog.csdn.net/wwwdc1012/article/details/82228458 LoadingCache缓存使用(Loadi ...

  4. PHP的魔术常量(变量)、魔术方法(函数)、超全局变量

    https://www.cnblogs.com/ccw869476711/p/9183783.html 一.魔术常量(魔术变量) 概念:所谓的魔术常量就是PHP预定义的一些常量,这些常量会随着所在的位 ...

  5. php预定义变量,超全局变量,魔术方法,特殊函数变量使用

    <?php /* * 本代码全部为测试函数代码,部分注释和写实例 * * 修改php.ini variables_order=”EGPCS” * 请注意$_REQUEST在优先级传参的时候会造成 ...

  6. php最全基础,数组,函数,超全局变量,时间,回话,文件,php操作mysql

    共享一份学习php最全基础语法知识的笔记 原文链接:http://www.cnblogs.com/oscn/p/3607757.html:略有修改   http://www.cnblogs.com/l ...

  7. php魔术常量、超全局变量、魔术方法

    一.魔术常量(魔术变量) 概念:所谓的魔术常量就是PHP预定义的一些常量,这些常量会随着所在的位置而变化. 1.__LINE__  获取文件中的当前行号. 2.__FILE__  获取文件的完整路径和 ...

  8. PHP变量入门教程(2)超全局变量,总共9个

    PHP 超全局变量 $GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键标为全局变量的 名称.从 PHP 3 开始存在 $GLOBALS 数组. $_SERVER 变量由 ...

  9. 【公众号系列】超详细SAP HANA JOB全解析

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]超详细SAP HANA JOB全解 ...

随机推荐

  1. Android蓝牙通信具体解释

    蓝牙通信的大概过程例如以下: 1.首先开启蓝牙 2,搜索可用设备 3,创建蓝牙socket.获取输入输出流 4,读取和写入数据 5.断开连接关闭蓝牙 还要发送配对码发送进行推断! 以下是全部的源码:不 ...

  2. 粗体EditorGUI

    GUILayout.Label ("Shading", EditorStyles.boldLabel); EditorGUILayout.Space (); InspectorSu ...

  3. PHP-Manual的学习----【语言参考】----【类型】-----【array数组】

    1.Array 数组  PHP 中的 数组 实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是 ...

  4. Office Web Apps Server 2013与PDF(二)

    在上一篇文章(Office Web Apps Server 2013与PDF(一))中,曾经介绍了Office Web Apps Server 2013在更新后,可以直接对PDF文档进行在线的查看.不 ...

  5. 详解Maven项目利用java service wrapper将Java程序生成Windows服务

    在项目的开发中,有时候需要将Java应用程序打包成Windows服务,我们就直接可以通过windows的服务来启动和关闭java程序了. 本博文将通过有两种方法实现该功能,手动创建法和Maven自动打 ...

  6. 基于 django 自带的用户认证进行用户认证

    django admin 默认已经存在了一个用户认证,这个时候可以偷个小懒,直接用 django 自带的,就不需要自己写用户认证了 1.目录结构: 2.代码 在 settings.py 中添加一行 # ...

  7. ASP向上取整

    <%Function Ceil(value)    Dim return    return = int(value)    Cei2=value-return    if Cei2>0 ...

  8. 电脑Svchost.exe 进程占CPU100% 的解决办法

    Windows Update诊断和修复修复工具 http://support.microsoft.com/mats/windows_update/zh-cn Svchost.exe占用CPU100%的 ...

  9. python实例2-写一个爬虫下载小功能

    主要是通过url,和re两个模块对一个网页的固定图片进行模糊匹配后下载下来. #! /usr/bin/python import re import urllib def gethtml(url): ...

  10. Android Theme主题

    •android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式 •android:theme="@and ...