Heim > Artikel > Backend-Entwicklung > 关于php中数组跟内存的管理
关于php中数组和内存的管理
按手册上说的,php除了object外,其他类型的变量在赋值、参数传递、返回值中得到都是它的副本
但是看下面的测试,不知道是因为测试方法有问题,还是说如果没有用&按引用传递的时候还是共享同一部分内存,但是在改变它的元素以后才真正生成了一份副本出来?
------解决方案--------------------
不是很清楚你的目标是什么?
m = 0;<br />$m = memory_get_usage();<br />$t = array('id' => 1, 'name' => 'none');<br />echo '$t 占用: ', memory_get_usage() - $m, PHP_EOL;<br />$data = array();<br />echo '空的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;<br />$m = memory_get_usage();<br />for($i=0; $i<1000; $i++) {<br /> $data[] = null;<br />}<br />echo '1000 个空元素的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;<br />$data = array();<br />$m = memory_get_usage();<br />for($i=0; $i<1000; $i++) {<br /> $data[] = $t;<br />}<br />echo '1000 个$t元素的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;<br />$data = array();<br />$m = memory_get_usage();<br />for($i=0; $i<1000; $i++) {<br /> $data[] = array('id' => 1, 'name' => 'none');<br />}<br />echo '1000 个实体元素的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;<br />$t 占用: 360