PHP 变量
PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
命令规则以标致符为准则。 - 变量以 $ 符号开头,其后是变量的名称 - 变量名称必须以字母或下划线开头 - 变量名称不能以数字开头 - 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _) - 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
变量作用域
- local(局部)(函数体内)
- global(全局)(函数体外)
- static(静态)(函数体内,重调不清0)
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
<?php
$x=5; // 全局作用域
function myTest() {
$y=10; // 局部作用域
echo "<p>测试函数内部的变量:</p>";
echo "变量 x 是:$x";
echo "<br>";
echo "变量 y 是:$y";
}
myTest();
echo "<p>测试函数之外的变量:</p>";
echo "变量 x 是:$x";
echo "<br>";
echo "变量 y 是:$y";
?>
global 关键词用于访问函数内的全局变量。
要做到这一点,请在(函数内部)变量前面使用 global 关键词:
<?php
$x=5;
$y=10;
function myTest() {
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
要完成这一点,请在您首次声明变量时使用 static 关键词:
预定义变量
- $GLOBALS — 引用全局作用域中可用的全部变量
- $_SERVER — 服务器和执行环境信息
- $_GET — HTTP GET 变量
- $_POST — HTTP POST 变量
- $_FILES — HTTP 文件上传变量
- $_REQUEST — HTTP Request 变量
- $_SESSION — Session 变量
- $_ENV — 环境变量
- $_COOKIE — HTTP Cookies
- $php_errormsg — 前一个错误信息
- $HTTP_RAW_POST_DATA — 原生POST数据
- $http_response_header — HTTP 响应头
- $argc — 传递给脚本的参数数目
- $argv — 传递给脚本的参数数组
超全局变量
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV
来自 PHP 之外的变量
HTML 表单(GET 和 POST)
可以使用$_POST[], $_GET[], $_REQUEST[]对值进行获取。
IMAGE SUBMIT 变量名
当提交表单时,可以用一幅图像代替标准的提交按钮,用类似这样的标记:
<input type="image" src="image.gif" name="sub" />
当用户点击到图像中的某处时,相应的表单会被传送到服务器,并加上两个变量 sub_x 和 sub_y。
它们包含了用户点击图像的坐标。有经验的用户可能会注意到被浏览器发送的实际变量名包含的是一个点而不是下划线(即 sub.x 和 sub.y), 但 PHP 自动将点转换成了下划线。
HTTP Cookies
Cookies 是一种在远端浏览器端存储数据并能追踪或识别再次访问的用户的机制。
可以用 setcookie() 函数设定 cookies。
Cookies 是 HTTP 信息头中的一部分,因此 SetCookie 函数必须在向浏览器发送任何输出之前调用。
对于 header() 函数也有同样的限制。Cookie 数据会在相应的 cookie 数据数组中可用,例如 $_COOKIE,$HTTP_COOKIE_VARS 和 $_REQUEST。
<?php
setcookie("MyCookie[foo]", 'Testing 1', time()+3600);
setcookie("MyCookie[bar]", 'Testing 2', time()+3600);
?>
可变变量
$a = 'hello';
$$a = 'world'
// 以下两种方式结果一样
echo "$a ${$a}";
echo "$a $hello";
常量
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。
常量默认为大小写敏感。传统上常量标识符总是大写的。
<?php
// 合法的常量名
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
// 非法的常量名
define("2FOO", "something");
// 下面的定义是合法的,但应该避免这样做:(自定义常量不要以__开头)
// 也许将来有一天PHP会定义一个__FOO__的魔术常量
// 这样就会与你的代码相冲突
define("__FOO__", "something");
?>
常量和变量有如下不同
- 常量前面没有美元符号($);
- 常量只能用 define() 函数定义,而不能通过赋值语句;
- 常量可以不用理会变量的作用域而在任何地方定义和访问;
- 常量一旦定义就不能被重新定义或者取消定义;
- 常量的值只能是标量。
定义常量
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // 输出 "Constant" 并发出一个提示级别错误信息
?>
定义常量(使用关键字 const)
<?php
// 以下代码在 PHP 5.3.0 后可以正常工作
const CONSTANT = 'Hello World';
echo CONSTANT;
?>
魔术常量
名称 | 说明 |
---|---|
LINE | 文件中的当前行号。 |
FILE | 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。 |
DIR | 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) |
FUNCTION | 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。 |
CLASS | 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 FooBar)。注意自 PHP 5.4 起 CLASS |
TRAIT | Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 FooBar)。 |
METHOD | 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 |
NAMESPACE | 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。 |
php如何声明定义变量
function myfun($title, $myvar="Moments"){
echo ">>>".$title."
";
echo $myvar;
echo "
";
}
$myvar = "Hello World!";
myfun("变量定义", $myvar);
PHP变量作用域
PHP 有三种不同的变量作用域:
local(局部):函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
global(全局):函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
static(静态):进行静态声明后,函数完成/执行完,不会删除所有变量。
global例子
$flag = 100;
function myfun(){
global $flag;
echo $flag;
}
myfun();
static例子
function myfun(){
static $flag = 0;
$flag++;
echo $flag;
}
for($i=0;$i<10;$i++){
myfun();
}
#输出12345678910
常量定义使用
define("PI", "3.14");
echo PI;
echo "
";
echo constant("PI");
衿华客
php 教程
- PHP简介
- PHP安装
- PHP语法
- PHP数据类型
- PHP变量
- PHP运算符
- PHP流程控制
- PHP函数
- PHP类与对象
- PHP字符串
- PHP正则表达示
- PHP文件
- PHP图形图像
- PHPXML
- PHP会话缓存
- PHP异常处理
- PHP数据库
- PHP日期时间戳
- PHP代码风格规范
server 环境
frame 框架
- laravel入门
- dingo入门
- JWT入门
- Laravel框架关键技术解析
- laravel则修笔记
- rpc入门
- rabbitmq入门
- opencc多国语言
- laravel兄弟连笔记
- laravel进阶