今天主要聊聊关于PHP数组实际占用存储器大小原理解析,通过示例代码详细介绍,对大家学习或工作或许有一定的参考和学习价值,有需要的朋友可以参考下

一般而言, PHP阵列的内存利用率只有1/10,即 C语言中100 M的阵列在 PHP中使用1 G。从测试1000个元素的整数所占用的内存开始,我们就可以大致估算 PHP数组所使用的内存:

<?php

  echo memory_get_usage() , '<br>';

  $start = memory_get_usage();

  $a = Array();

  for ($i=0; $i<1000; $i++) {

  $a[$i] = $i + $i;

  }

  $mid = memory_get_usage();

  echo memory_get_usage() , '<br>';

  for ($i=1000; $i<2000; $i++) {

  $a[$i] = $i + $i;

  }

  $end = memory_get_usage();

  echo memory_get_usage() , '<br>';

  echo 'www.66018555.com  argv:', ($mid - $start)/1000 ,'bytes' , '<br>';

  echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';

输出是:

353352

437848

522024

argv:84.416bytes

argv:84.176bytes

大概了解下对于1000个元素的整数阵列来说,占用82k内存,每个元素平均占用84字节。纯净的 C语言只需4 k (1个完整的 byte*1000)。memory_get_usage ()()返回的结果并非全部由数组占据,其中还包括一些 PHP运行本身分配的结构,这些结构可能使用内建函数生成的数组更接近实际空间。