`

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中的内存管理问题时,我们首先要明白PHP是一种解释型语言,它的内存管理机制与编译型语言如C有所不同。PHP的内存管理对于长时间运行的服务尤其关键,因为内存泄漏可能导致服务器性能下降甚至崩溃。 在...

    提高php内存.zip

    在PHP编程环境中,内存管理是优化性能的关键环节。"提高php内存"这个主题涉及到如何有效地调整PHP配置以提升其内存使用限制,确保程序能够处理更复杂或资源密集型的任务。以下是一些关于PHP内存管理的核心知识点: ...

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

    2. 非缓冲查询(Unbuffered Query):通过特定的设置,让PHP在执行查询时,逐条从数据库服务器读取数据,而不会将整个结果集一次性加载到内存中。这样可以显著减少内存使用,但会增加数据库服务器的负担,因为数据库...

    使用PHP获取内存使用情况

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

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

    在IT领域,尤其是在大数据处理和高性能计算中,选择正确的编程语言对于实现千万级内存数据的高效处理至关重要。本文将深入探讨Java、PHP、Python和Erlang这四种语言在处理千万级内存数据时的性能差异。 首先,让...

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

    ### PHP中关于引用(&)详解 #### 引言 在PHP编程中,引用是一个非常重要的概念,它使得多个变量能够共享同一份数据。不同于其他语言中的指针机制,PHP中的引用更加安全且易于使用。本文将详细介绍PHP中引用的各种...

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

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

    PHP内存缓存的配置及使用

    PHP内存缓存是提高Web应用程序性能的关键技术之一,它通过存储经常访问的数据在内存中,避免了反复从数据库读取,从而显著提升了网站的响应速度。本文将详细介绍如何在Windows环境下配置和使用PHP的内存缓存系统——...

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

    这主要是因为phpExcel在内存中保存单元格信息,当数据量大时,内存消耗超过PHP配置的最大值,导致错误。下面将详细探讨如何解决phpExcel导出大量数据时出现的内存溢出问题。 首先,需要了解phpExcel在内存使用上的...

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

    EasyTask是一款专为PHP设计的轻量级常驻内存多进程任务管理器,它使得在PHP环境中实现复杂的并发处理和任务调度变得简单易行。EasyTask的核心特性是保持任务状态在内存中,避免了传统PHP脚本每次执行时重新加载数据...

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

    在PHP中,可以使用`shmop`扩展来操作共享内存,包括创建、打开、读取、写入和删除等操作。而在C++中,可以使用POSIX标准的`shm_open`、`mmap`等函数来实现相同的功能。通过共享内存,PHP和C++进程可以共享复杂的数据...

    [PHP] pmap可以查看进程占用内存的详细情况

    在实际应用中,我们可以使用 pmap 命令来查看 PHP 进程的内存占用情况,了解 PHP 扩展占用内存的情况,以便更好地优化 PHP 应用程序的性能和内存使用。 此外,我们还可以使用 pmap 命令来查看其他类型的进程的内存...

    nginx+php-fpm模式php内存泄漏探究1

    标题中的"nginx+php-fpm模式php内存泄漏探究1"是指在使用Nginx作为Web服务器,PHP-FPM作为PHP解释器的环境中,出现PHP内存泄漏的现象。描述中提到了一个实际案例,即一个PHP-FPM进程占用2GB内存,而实际上在php.ini...

    php的内存缓存memcached类代码

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

    php监控linux流量,cpu利用率,磁盘利用率,内存利用率

    6. **文档记录**:项目中提到的具体步骤文档,应当详细记录每个阶段的操作方法和配置细节,便于后期维护和升级。 通过这个项目,你可以建立一个自定义的Linux监控系统,它不仅能提供实时的系统状况反馈,还能生成...

    关于php内存管理与讨论

    在PHP编程中,内存管理是一个至关重要的环节,特别是对于那些长期运行的服务器程序,如Web服务器和PHP扩展模块。了解PHP如何分配和释放内存能帮助开发者编写更加高效和稳定的代码。 一、内存分配 PHP中的内存管理...

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

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

    PHP unset()函数用来释放内存

    在PHP编程语言中,`unset()`函数是一个非常重要的内建函数,主要用于释放或删除变量的内存。这个函数在处理大型数据集或者优化代码性能时显得尤为关键,因为它可以帮助减少内存的消耗。当我们不再需要某个变量时,...

    一个PHPUnit插件可以检测经过测试的代码或测试中的内存泄漏

    标题中的“一个PHPUnit插件可以检测经过测试的代码或测试中的内存泄漏”指的是在PHP开发过程中,使用PHPUnit作为测试框架时,有一款插件能够帮助开发者检测被测试代码或者测试用例自身是否存在内存泄漏问题。内存...

Global site tag (gtag.js) - Google Analytics