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

[经验分享] PHP 中的内存引址&

[复制链接]

尚未签到

发表于 2017-3-26 08:07:53 | 显示全部楼层 |阅读模式
  转自:http://www.xiukun.me/php-%E4%B8%AD%E7%9A%84%E5%86%85%E5%AD%98%E5%BC%95%E5%9D%80/
  在PHP一般有函数引址和变量引址
变量引址

$var = 998;
$c = &$var;  // 变量$c引用了$var的内存地址. 这时变量$c和变量$var使用的就是同一个内存地址. 他们值会一起变
$c = 100;   // 当我改变了变量$c的值以后$var也会跟着变
var_dump($var);
//返回结果
100

  类引址
  函数地址引用可以改变函数的返回值. 适用于跨函数的值保存.

class ref {
public $var = 100;
function &getvar() {
return $this->var;
}
}
$demo = new ref();
$var = &$demo->getvar();
$var = 300; // 改变函数的返回值.
echo $demo->getvar();
//结果
300
  函数引址

/**
* 根据$key保存或读取数据.
*
* @staticvar mixed $static
* @param mixed $key
* @return mixed
*/
function &save_data($key) {
static $static;
if(!isset($static[$key])) {
$static[$key] = '';
}
return $static[$key];
}
// 创建一个夸函数的数组.
function save1() {
$save_data = &save_data('mydata');
$save_data['php'] = 'hello, world';
}
function save2() {
$save_data = &save_data('mydata');
$save_data['shell'] = 'echo hello world';
}
// 以下创建一个对象,每一个函数保存一部分数据.
function saveobj1() {
$save_data = &save_data('myobj');
$save_data = new stdClass();
$save_data->username = 'hello';
$save_data->age = 22;
$save_data->sex = '男';
}
function saveobj2() {
$save_data = &save_data('myobj');
$save_data->height = 180;
$save_data->weight = '55KG';
}
save1();
save2();
saveobj1();
saveobj2();
// 读取出全部保存的数据,并输出.
$data = &save_data('mydata');
var_dump($data);
$obj = &save_data('myobj');
var_dump($obj);
   输出结果:

array (size=2)
'php' => string 'hello, world' (length=12)
'shell' => string 'echo hello world' (length=16)
object(stdClass)[1]
public 'username' => string 'hello' (length=5)
public 'age' => int 22
public 'sex' => string '男' (length=3)
public 'height' => int 180
public 'weight' => string '55KG' (length=4)
   

运维网声明 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-355418-1-1.html 上篇帖子: php抓取图片代码 下篇帖子: 2015.03.19---PHP XCAP开发,PHP XML导出, PHP数组的操作,PHP反射机制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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