【php – end(explode)严格标准:只应通过引用传递变量】教程文章相关的互联网学习教程文章

浅析PHP原理之变量分离/引用(Variables Separation)

首先我们回顾一下zval的结构: 代码如下:struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount; zend_uchar type; /* active type */ zend_uchar is_ref;};其中的refcount和is_ref字段我们一直都没有介绍过,我们知道PHP是一个长时间运行的服务器端的脚本解释器。那么对于它来说,效率和资源占用率是一个很重要的衡量标准,也就是说,PHP必须...

PHP引用符&的用法详细解析

关于php的引用(就是在变量或者函数、对象等前面加上&符号)的作用,我们先看下面这个程序。 代码如下:<?php $a = 100; //声明变量a $b = &$a; //声明变量b,引用自变量a echo "$a <br />"; echo "$b <br />"; $a++; //变量a自增1 echo "$a <br />"; echo "$b <br />";//查看变量b,也增加了1,说明使用的是同一存储单元 ?> 程序运行结果: 代码如下:100 100 101 101 很多人误解php中的引用跟C当中的指针一样...

php函数间的参数传递(值传递/引用传递)

php:函数间的参数传递 1.值传递 代码如下:<?php function exam($var1){ $var1++; echo "In Exam:" . $var1 . "<br />"; } $var1 = 1; echo $var1 . "<br />"; exam($var1); echo $var1 . "<br />"; ?> ------------------------------------------------------------------------------- 输出结果: 1 In Exam: 2 1 ------------------------------------------------------------------------------- 2.引用传递 代码如下:<?p...

php foreach循环中使用引用的问题

看代码,再做解释 代码如下:<?php $array=array('a','b','c','d'); foreach($array as $key=>$val){ //do something } echo $val;//输出d echo $kay;//输出3 $val='e'; print_r($array);//输出Array ( [0] => a [1] => b [2] => c [3] => d ) ?> 在foreach循环中,当循环结束后,$key和$val变量都不会自动释放掉。值会被保留下来。当foreach使用引用的情况下,会出现如下的情况,需要注意。 代码如下:<?php $array=array('a','...

php引用传值实例详解学习

引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的 hardlink。一:变量的引用 代码如下:<?php$a =100;$b = &$a;echo $b; //这里输出100echo $a; //这里...

PHP变量的定义、可变变量、变量引用、销毁方法

代码如下:<?php$long="big_long_variable_name";$$long="PHP"; /* 用存放在变量$long里的字符串作为新变量的变量名,等同于$big_long_variable_name="PHP"; */$short=& $big_long_variable_name; /* 取变量$big_long_variable_name的值赋给变量$short,此时$short的值为"PHP",等同于$short=& $$long; */print "01 /$short is $short."; /* "/$"是转义序列,表示输出一个美元符号$,下同。本语句的作用是输出:01 $short is...

浅谈PHP变量作用域以及地址引用问题

作用域的概念: 在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围。这个可以访问的范围称为作用域。 主要的常用的包括:局部变量、全局变量、静态变量。 1、局部变量:就是在函数内声明的变量,他保存在内存的栈内,所以访问速度很快。仅在函数内有效。 2、全局变量:与局部变量相反,全局变量可以在程序的任何地方访问。只要在变量前面加关键字GLOBAL,就可以将其识别为全局变量。在整个php文件内...

PHP、Nginx、Apache中禁止网页被iframe引用的方法

可以使用php或nginx等添加X-Frame-Options header来控制frame权限X-Frame-Options有三个可选的值: DENY:浏览器拒绝当前页面加载任何Frame页面SAMEORIGIN:frame页面的地址只能为同源域名下的页面ALLOW-FROM:允许frame加载的页面地址 PHP代码: 代码如下:header(‘X-Frame-Options:Deny); Nginx配置: 代码如下:add_header X-Frame-Options SAMEORIGIN 可以加在locaion中 代码如下:location /{ add_header X-Frame-Options SAMEOR...

PHP对象递归引用造成内存泄漏分析

通常来说,如果PHP对象存在递归引用,就会出现内存泄漏。这个Bug在PHP里已经存在很久很久了,先让我们来重现这个Bug,示例代码如下: <?php class Foo {function __construct() {$this->bar = new Bar($this);} }class Bar {function __construct($foo) {$this->foo = $foo;} }for ($i = 0; $i < 100; $i++) {$obj = new Foo();unset($obj);echo memory_get_usage(), "/n"; } ?> 运行以上代码,你会发现,内存使用量本应该不变才对...

PHP对象相互引用的内存溢出实例分析

通常来说使用脚本语言最大的好处之一就是可利用其拥有的自动垃圾回收机制来释放内存。你不需要在使用完变量后做任何释放内存的处理,因为这些PHP会帮你完成。 当然,我们可以按自己的意愿调用 unset() 函数来释放内存,但通常不需要这么做。 不过在PHP里,至少有一种情况内存不会得到自动释放,即便是手动调用 unset()。详情可考PHP官网关于内存泄露的分析:http://bugs.php.com/bug.php?id=33595。 问题症状如下: 如果两个对象之...

PHP中变量引用与变量销毁机制分析

本文实例分析了PHP中变量引用与变量销毁机制。分享给大家供大家参考。具体分析如下: 变量是php中一个非常重要的类型了,我们的有数据都通过变量或常量来进行操作,下文来看看变量引用与变量销毁。 在php中,符号"&"表示引用。 1、看看不引用的情况是这样子:代码如下:$a = "hello world";//定义一个变量,下面赋值给$b $b = $a;//这一步没有在$a之前加符号&,像这样子"$b= & $a"。没有加&,实际上原理是会将变量$a复制拷贝一份,也...

十幅图告诉你什么是PHP引用【图】

在一篇文章中看到关于PHP引用的图解,对于加深对PHP引用的理解很有帮助,在这里备份一下。 如果你对PHP的引用一点也不了解,可以先看我之前的博客:PHP的引用详解十分全面的总结,非常有助于我们理解php引用,希望小伙伴们喜欢。

PHP的引用详解

引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的 hardlink。 引用做什么PHP 的引用允许用两个变量来指向同一个内容。意思是,当这样做时:代码如下: <?php...

PHP中返回引用类型的方法

返回引用,在定义和调用的时候 & 都不可以省略。 这是个比较容易混淆的概念,如果不是出于某些特殊的原因,建议还是不要使用。 说他很容易混,是因为 Reference 在 PHP5 中的变化,造成其在 PHP4/PHP5 中表现的行为差异比较大。 举个例子说明:代码如下: <?php $color = YellowGreen; function &getRef() { global $color; return $color; } function getCopy() { global $color; return $color; } $color...

了解PHP的返回引用和局部静态变量

先阅读手册 ========== 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & : 代码如下: <?php function &returns_reference() { $someref = 0; return $someref; } $newref = &returns_reference();//相当于 $newref = &$someref; ?>有关引用的更多信息, 请查看引用的解释。 在来看一段很多开源代码喜欢用的单例注册模式代码如下: class a{} class b{} function & a...