• 技术文章 >后端开发 >PHP问题

    php中变量占内存吗

    (*-*)浩(*-*)浩2019-09-06 09:42:48原创229

    在php中存储数据的一种方式,就是i可以发生改变的量,这种方式是在内存中开辟一个可以存放数据的空间,给这个空间起个名称,这时候的空间就可以称为一个变量。在运行过程中这个值是可以发生改变的

    当前空间的名称就是变量名,当前空间的数据(八种数据类型)就称为变量值

    事例:(推荐学习:PHP视频教程

    php版本为7.2

    <?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 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
    echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
    echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
    echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
    输出是:
    389336
    418056
    442632
    argv:28.72bytes
    argv:24.576bytes
    Memory:28.046875k
    Memory:24k

    返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte)。

    大概了解1000个元素的整数数组需要占用 28k 内存,平均每个元素占用 28 个字节

    memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP

    运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:

    <?php
    $start = memory_get_usage();
    $a = array_fill(0, 10000, 1);
    $mid = memory_get_usage(); //10k elements array;
    echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';
    echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
    $b = array_fill(0, 10000, 1);
    $end = memory_get_usage(); //10k elements array;
    echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';
    echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
    得到:
    argv:54.5792byte
    argv:54.5784byte
    
    argv:39.736byte
    Memory:388.046875k
    argv:39.736byte
    Memory:388.046875k

    大概了解10000个元素的整数数组需要占用 388k 内存 ,从这个结果来看似乎一个数组元素大约占用了39个字节左右。

    以上就是php中变量占内存吗的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php
    上一篇:如何正确结束php语句? 下一篇:php中不等运算符是什么

    相关文章推荐

    • 能用eclipse写PHP吗?• php中$_post什么意思• php中的抽象类是什么?怎么用?• php中print_r什么意思

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网