设为首页 收藏本站
查看: 1277|回复: 0

[经验分享] PHP变量使用总结

[复制链接]

尚未签到

发表于 2017-3-26 12:13:25 | 显示全部楼层 |阅读模式
  1.定义常量define("CONSTANT", "Hello world."); 
  常量只能包含标量数据(boolean,integer,float 和 string)。
调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echo CONSTANT;如果常量名是动态的,也可以用函数 constant() 来读取常量的值。用 get_defined_constants() 可以获得所有已定义的常量列表。  
  注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。
  常量和变量不同:



  •   常量前面没有美元符号($);

  •   常量只能用 define()
    函数定义,而不能通过赋值语句;

  •   常量可以不用理会变量范围的规则而在任何地方定义和访问;

  •   常量一旦定义就不能被重新定义或者取消定义;

  •   常量的值只能是标量。 


define() 函数定义一个常量。
常量类似变量,不同之处在于:


  • 在设定以后,常量的值无法更改
  • 常量名不需要开头的美元符号 ($)
  • 作用域不影响对常量的访问
  • 常量值只能是字符串或数字

语法

define(name,value,case_insensitive)

参数
描述


name
必需。规定常量的名称。


value
必需。规定常量的值。


case_insensitive

必需。规定常量的名称是否对大小写敏感。
若设置为 true,则对大小写不敏感。默认是 false(大小写敏感)。




  

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

3.可变变量(使用两个美元符号($))
$$a = "world";
两个变量都被定义了:
$a 的内容是“hello”并且 $hello 的内容是“world”。
因此,可以表述为:
echo "$a ${$a}";或者  echo "$a $hello";它们都会输出:hello world
要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
例子:

  <?php
  $a="hello";
  $$a="world!";
  echo $a;echo "<br/>"; //hello
  echo $hello;echo "<br/>";//world!
  echo $$a;echo "<br/>";//world!
  echo ${$a};echo "<br/>";//world!
  //echo "$a$$a";echo "<br/>";//hello$hello
  //echo "$a.$$a"; echo "<br/>";//hello.$hello
  echo "$a${$a}";echo "<br/>";        //helloworld!
  //echo $a${$a};echo "<br/>";//syntax error, unexpected '$', expecting ',' or ';'
  echo $a.$$a;echo "<br/>"; //helloworld!
  echo $a.${$a};echo "<br/>"; //helloworld!
  echo "$a$hello";   echo "<br/>"; //helloworld!
  //echo $a$hello;   echo "<br/>";//syntax error, unexpected T_VARIABLE, expecting ',' or ';' 
  echo $a.$hello;   echo "<br/>"; //helloworld!
  echo $$a[0]."p";   echo "<br/>";//p
  echo ${$a[0]}."p";   echo "<br/>";//p
  echo $a[0]."p";   echo "<br/>";     //hp
  echo ${$a}[0]."p";   echo "<br/>";   //w
  ?>
  
4.静态变量
在函数内部static $a = 0;
注意:声明中用表达式的结果对其赋值会导致解析错误如static  $a =3+3;(error)
静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用

5.全局变量
  global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 PHP 自定义 $GLOBALS 数组:
如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用
global $obj;
注:
  1》对于变量的 static 和 global 定义是以 应用 的方式实现的
  2》 如果声明全局变量,最好一定要用$GLOBALS,否则如果在另一个文件的函数里使用require_once('...php')无法将这个变量放入全局变量空间。
  例子:
  <?php
  $a="a";
  function a()
  {
  global $a;  //如果不把$a定义为global变量,函数体内是不能访问$a的
  echo $a;
  }
  a();
  //*********************************
  function c()
  {
  global $c;
  $c="c";
  }
  c();
  echo $c;  //正确,可以使用
  //*********************************
  global $b;
  $b="b";
  function b()
  {
  echo $b;   //没有输出任何值也没有报错
  }
  echo $b;
  ?>
  

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 :当前注册给脚本会话的变量。

  感谢:http://fenhonghai.iteye.com/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-355611-1-1.html 上篇帖子: php数据库操作 下篇帖子: PHP 上传图片操作流程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表