例如,当比较内存管理方式时,以下两个函数是否相同:
$hello = 'hello';
my_echo($hello);
//Better or worse than
my_echo_ref($hello);
//case 1, no referencing:
function my_echo($word) {
echo $word;
}
//case 2, referencing:
function my_echo_ref(&$word) {
echo $word;
}
发布于 2018-11-07 19:51:16
如果您使用数组作为数据源,构建第二个数组,并通过为数组分配一个变量来简化数组维度,则通过引用更好。
示例:
$clients_favorite_things=array_fill(0,20,array("movies"=>array("movie 1","movie 2","movie 3"),"books"=>array("book 1","book 2","book 3") ));
$clients = array_fill(0,20,array());
//Goal is to have a final clients array with only movies data assuming the index of this array is the client id
$m1 = memory_get_usage();
foreach($clients as $client_id => $client_data){
$favorite_things=$clients_favorite_things[$client_id]; //this does copy data
$clients[$client_id]["favorite_things"]=$favorite_things["movies"];
}
print 'APROX size ' . ( memory_get_usage() - $m1 ) . '<br/>';
$m1 = memory_get_usage();
foreach($clients as $client_id => $client_data){
$favorite_things=&$clients_favorite_things[$client_id]; //assign by reference: this wont copy data
$clients[$client_id]["favorite_things"]=$favorite_things["movies"];
}
print 'APROX size ' . ( memory_get_usage() - $m1 ) . '<br/>';
print_r($clients);
APROX大小: 7520
APROX大小: 856
https://stackoverflow.com/questions/3126013
复制相似问题