`

PHP 中的内存引址&

 
阅读更多

转自: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)

 

分享到:
评论

相关推荐

    使用PHP获取内存使用情况

    使用PHP获取内存使用情况 一、开发环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 本实验主要通过几种不同的排序算法和memory_get_usage()来...

    php中关于引用(&)详解.docx

    php中关于引用(&)详解 php中关于引用(&)详解 php中关于引用(&)详解

    提高php内存.zip

    提高php内存.zip

    PHP EXCEL导出类PHP_XLSXWriter 0占用内存秒速度

    PHP_XLSXWriter 旨在输出...并且examples中有详细的各种例子,本人已阅读源码,此类库是使用创建临时文件,先把每行数据追加到临时文件最后用zip扩展把文件打包为表格文件,其确实占用内存小和速度快,请放心下载。

    php的内存缓存memcached类代码

    一个php内存缓存Memcached类代码,构造方法,用于添加服务器并创建memcahced对象,获取memcached对象,检查mem是否连接成功,向memcache中添加数据,获取memcahce中保存的数据,删除和同一个表相关的所有缓存。

    深入探讨PHP中的内存管理问题

    从普通用户角度来看,这种仔细地控制资源和内存的方式意味着更为容易地进行原型开发并导致出现更少的冲突。然而,当我们深入\"内里\"之后,一切的承诺似乎都不复存在,最终还要依赖于真正有责任心的开发者来维持整个...

    java php python erlang 千万级内存数据性能比较

    java php python erlang 千万级内存数据性能比较,

    EasyTask简单易用的PHP常驻内存多进程任务管理器.zip

    EasyTask简单易用的PHP常驻内存多进程任务管理器含windows组件

    php的内存缓存memcached类代码.zip

    一个php内存缓存Memcached类代码,构造方法,用于添加服务器并创建memcahced对象,获取memcached对象,检查mem是否连接成功,向memcache中添加数据,获取memcahce中保存的数据,删除和同一个表相关的所有缓存。

    PHP内存缓存的配置及使用

    PHP内存缓存的配置及使用

    解决PHP里大量数据循环时内存耗尽的方法

    错误信息提示最大内存已经耗尽,该如何解决呢?下面小编给大家解决PHP里大量数据循环时内存耗尽的问题,需要的朋友可以参考下

    PHP与C++进行IPC命名管道共享内存通信

    PHP与C++进行IPC命名管道共享内存通信,实现PHP网页与C++程序之间高效率跨进程通信。

    解析PHP中的内存管理,PHP动态分配和释放内存

    摘要 内存管理对于长期运行的程序,例如服务器守护程序,是相当重要的影响;因此,理解PHP是如何分配与释放内存的对于创建这类程序极为重要。本文将重点探讨PHP的内存管理问题。 一、 内存在PHP中,填充一个字符串...

    查找和修复PHP中的内存泄漏-PHP开发

    Valentin Udaltsov在PHP Point频道上的流...在电报中提到的材料作者的通道Pykh在DI中正确地注册了Symfony控制台命令Symfony ProgressBar Symfony Stopwatch防止在工作人员中耗尽memory_get_usage()中的$...

    php压缩合并html&js&css集合

    combo-master[php合并js&css].zip compress-js-css-v2.0.0.zip.7z HtmlCompressorBundle-master.zip html-minify-master[php压缩html].zip jsmin-php-master[php压缩js].zip minify-2.1.5[php合并js&css].zip ...

    PHP的扩展, 可以跟PHP的数组一比

    PHP的扩展, 可以跟PHP的数组,因为PHP的数组是使用哈希表的, 所以内存使用比较大, 所以我用红黑树来写了一个dict的结构, 内存使用比PHP的数组少一半以上, 查询速度基本上跟PHP的数组相当, 不过插入速度稍微慢PHP的...

    php-memory-profiler:用于PHP的内存泄漏分析器

    该扩展跟踪内存块的分配和释放,以报告程序中每个函数,方法或文件泄漏的内存量。 报告程序中任意点的未释放内存 以callgrind,pprof或原始数组格式转储配置文件 可以跟踪PHP本身以及本机malloc分配的内存 安装 ...

    PHP中文件缓存转内存缓存的方法

    前言 顾名思义文件缓存转内存缓存就是将存储在文件中的数据转到内存中去,实现磁盘操作转为内存操作,这样可以大大提高数据访问速度,并能实现缓存数据的分布式部署。文件缓存与内存缓存的介绍请参考名词解释部分。 ...

    php5.6 memcache 64 && 32

    php5.6 memcache 64 && 32

    phpExcel导出大量数据出现内存溢出错误的解决方法

    我们经常会使用phpExcel导入或导入xls文件,但是如果一次导出数据比较大就会出现内存溢出错误,下面我来总结解决办法

Global site tag (gtag.js) - Google Analytics