专栏首页上善若水P002PHP开发之变量定义

P002PHP开发之变量定义

1.定义常量define("CONSTANT", "Hello world.");

常量只能包含标量数据(boolean,integer,float 和 string)。
调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echo CONSTANT;
注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。

2.普通变量$a = "hello";

3.可变变量(使用两个美元符号($))

$$a = "world";  //在这里相当于$hello="world";
两个变量都被定义了:
$a 的内容是“hello”并且 $hello 的内容是“world”。
因此,可以表述为:
echo "$a ${$a}";或者 echo "$a $hello";它们都会输出:hello world

要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。

4.静态变量

在函数内部static $a = 0;

注意:声明中用表达式的结果对其赋值会导致解析错误如static $a =3+3;(error)
静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用

5.全局变量

在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 PHP 自定义 $GLOBALS 数组:

如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用 global $obj; 注:对于变量的 static 和 global 定义是以 应用 的方式实现的

6.给变量赋值:传地址赋值(简单引用):

$bar = &$foo; //加&符号到将要赋值的变量前
改动新的变量将影响到原始变量,这种赋值操作更加快速
注意:只有命名变量才可以传地址赋值
注意:如果
$bar = &$a;
$bar = &$foo;
改变$bar的值只能改变变量foo的值,而不改变a的值(引用改变了)

7.PHP 超全局变量$GLOBALS :

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

$_SERVER : 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
$_GET : 经由 HTTP GET 方法提交至脚本的变量。
$_POST : 经由 HTTP POST 方法提交至脚本的变量。
$_COOKIE : 经由 HTTP Cookies 方法提交至脚本的变量。
$_FILES : 经由 HTTP POST 文件上传而提交至脚本的变量。

文件上传表单中要有 enctype="multipart/form-data"

$_ENV : 执行环境提交至脚本的变量。
$_REQUEST :经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。该数组没有直接模拟 PHP 4.1.0 的早期版本。参见 import_request_variables()。
注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。
$_SESSION :当前注册给脚本会话的变量。

如何禁用phpinfo():

php.ini中
disable_functions = phpinfo()

php中的常量 常量只能用define(常量名,常量值); 常量只能包含标量数据(boolean,integer,float 和 string)。 可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。如果常量名是动态的,也可以用函数

constant() 来读取常量的值。用 get_defined_constants() 可以获得所有已定义的常量列表。 如果只想检查是否定义了某常量,用 defined() 函数。

常量和变量不同:

  • 常量前面没有美元符号($);
  • 常量只能用 define() 函数定义,而不能通过赋值语句;
  • 常量可以不用理会变量范围的规则而在任何地方定义和访问;
  • 常量一旦定义就不能被重新定义或者取消定义;
  • 常量的值只能是标量。 定义常量
    <?PHP

    define("CONSTANT", "Hello world.");
    echo CONSTANT; // outputs "Hello world."
    echo Constant; // outputs "Constant" and issues a notice.
    ?> 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0x15Java引用赋值,是原子操作吗? 线程安全吗?

    所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的...

    上善若水.夏
  • 002工具及环境之查看当前局域网有那些IP在线

    用Arp -a命令,查询MAC数据 除去尾数为255的广播地址,剩下的就是当前电脑的在线列表

    上善若水.夏
  • 031android初级篇之【转】android 9png图片

    在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于An...

    上善若水.夏
  • PHP 变量与常量

    本文介绍了 PHP 变量与常量。 官方文档:http://php.net/manual/zh/language.variables.php 官方文档:http:...

    康怀帅
  • 怎么去掉eclipse对注释的字母语法错误的检查?

    黑泽君
  • JS-高程3(更新中...)

    xing.org1^
  • SAP PM 入门系列16 - KO88对维护工单做结算

    能找到KO88和KO8G等事务代码。其中,KO88 用于为单个维护工单执行结算;KO8G可以为多个维护工单同时执行结算。

    Terminator2058
  • 11g Grid Control安装过程的一些“坑”

    Oracle提供的图形化管理工具目前主要有三个版本: EMDC:Enterprise Manager Database Control EMGC:Ent...

    bisal
  • 深入理解JVM虚拟机---字节码分析

    有了这张表就可以对照着常量池字节码数据一一找出期中包含的信息,下面以后续7个常量为例:

    俺也想起舞
  • 听说过条件变量Condition吗

    上一次我们介绍了ReentrantLock和Synchronized的异同,这次我们来讲讲concurrent包下面的另外一个类,Condition。 Java...

    PhoenixZheng

扫码关注云+社区

领取腾讯云代金券